From e70f8eda3a6da21eda19c667c506c3b2e16de6f9 Mon Sep 17 00:00:00 2001 From: cheater Date: Wed, 23 Sep 2026 12:03:48 +0300 Subject: [PATCH 1/5] SIGParser: language server for live .sig diagnostics in Visual Studio `sigparser --lsp` speaks LSP over stdio and publishes the same errors a generator run reports (syntax errors plus validate()), for the unsaved contents of open buffers. Validation spans the whole sigs/ directory; a file with syntax errors contributes its last good parse so other files' references to it don't cascade into false errors. LSP.cpp carries its own small JSON reader: importing cereal.json in a second translation unit makes Main.cpp's make_map() crash with an access violation (MSVC header-unit issue). parse() is split into parse()/parse_text(); the per-file progress print moves to the CLI path so stdout stays clean for the protocol. The VSIX now also carries SigLanguageClient.dll (compiled by the script with VS's own csc and assemblies) and the bundled sigparser.exe with its DLL closure. SIG_LSP_SERVER overrides the bundled server path. Co-Authored-By: Claude Opus 5.5 --- sources/SIGParser/Diagnostics.h | 13 + sources/SIGParser/LSP.cpp | 624 ++++++++++++++++++ sources/SIGParser/LSP.h | 6 + sources/SIGParser/Main.cpp | 7 +- sources/SIGParser/Parsing.cpp | 68 +- sources/SIGParser/Parsing.h | 4 + sources/SIGParser/editor/SigLanguageClient.cs | 98 +++ sources/SIGParser/editor/gen_vs_extension.py | 84 ++- 8 files changed, 867 insertions(+), 37 deletions(-) create mode 100644 sources/SIGParser/LSP.cpp create mode 100644 sources/SIGParser/LSP.h create mode 100644 sources/SIGParser/editor/SigLanguageClient.cs diff --git a/sources/SIGParser/Diagnostics.h b/sources/SIGParser/Diagnostics.h index 689796044..0a8baac42 100644 --- a/sources/SIGParser/Diagnostics.h +++ b/sources/SIGParser/Diagnostics.h @@ -6,15 +6,28 @@ // tree is internally inconsistent and worse than a stale one. class Diagnostics { +public: struct Entry { SourceLocation loc; std::string message; }; +private: std::vector errors; public: + const std::vector& entries() const + { + return errors; + } + + // The language server revalidates in one long-lived process. + void clear() + { + errors.clear(); + } + void error(const SourceLocation& loc, std::string message) { errors.push_back({ loc, std::move(message) }); diff --git a/sources/SIGParser/LSP.cpp b/sources/SIGParser/LSP.cpp new file mode 100644 index 000000000..c1e6b27aa --- /dev/null +++ b/sources/SIGParser/LSP.cpp @@ -0,0 +1,624 @@ +import Core; +import windows; + +#include "LSP.h" +#include "Parsing.h" +#include "Diagnostics.h" +#include "Validate.h" + +// Deliberately does not use rapidjson: importing cereal.json into a second +// translation unit of this executable makes Main.cpp's make_map() crash with an +// access violation (MSVC header-unit issue; reproduced with a three-line stub +// that only parsed "{}"). LSP messages are small, so a minimal reader suffices. +namespace +{ + struct Json + { + enum Type { Null, Bool, Number, String, Array, Object } type = Null; + bool boolean = false; + std::string text; // String value, or a Number's source text (echoed back verbatim as an id) + std::vector items; // Array elements, or Object values + std::vector keys; // Object keys, parallel to items + + const Json& operator[](std::string_view key) const + { + static const Json null; + for (size_t i = 0; i < keys.size(); ++i) + if (keys[i] == key) + return items[i]; + return null; + } + + bool has(std::string_view key) const + { + return std::find(keys.begin(), keys.end(), key) != keys.end(); + } + }; + + class JsonReader + { + std::string_view s; + size_t pos = 0; + + void skip_ws() + { + while (pos < s.size() && (s[pos] == ' ' || s[pos] == '\t' || s[pos] == '\n' || s[pos] == '\r')) + ++pos; + } + + void expect(char c) + { + skip_ws(); + if (pos >= s.size() || s[pos] != c) + throw std::runtime_error(std::format("json: expected '{}' at {}", c, pos)); + ++pos; + } + + static void append_utf8(std::string& out, uint32_t cp) + { + if (cp < 0x80) + out += (char)cp; + else if (cp < 0x800) + { + out += (char)(0xC0 | (cp >> 6)); + out += (char)(0x80 | (cp & 0x3F)); + } + else if (cp < 0x10000) + { + out += (char)(0xE0 | (cp >> 12)); + out += (char)(0x80 | ((cp >> 6) & 0x3F)); + out += (char)(0x80 | (cp & 0x3F)); + } + else + { + out += (char)(0xF0 | (cp >> 18)); + out += (char)(0x80 | ((cp >> 12) & 0x3F)); + out += (char)(0x80 | ((cp >> 6) & 0x3F)); + out += (char)(0x80 | (cp & 0x3F)); + } + } + + uint32_t hex4() + { + if (pos + 4 > s.size()) + throw std::runtime_error("json: truncated \\u escape"); + uint32_t v = std::stoul(std::string(s.substr(pos, 4)), nullptr, 16); + pos += 4; + return v; + } + + std::string read_string() + { + expect('"'); + std::string out; + while (pos < s.size() && s[pos] != '"') + { + char c = s[pos++]; + if (c != '\\') + { + out += c; + continue; + } + char e = s[pos++]; + switch (e) + { + case 'n': out += '\n'; break; + case 'r': out += '\r'; break; + case 't': out += '\t'; break; + case 'b': out += '\b'; break; + case 'f': out += '\f'; break; + case 'u': + { + uint32_t cp = hex4(); + if (cp >= 0xD800 && cp < 0xDC00 && pos + 1 < s.size() && s[pos] == '\\' && s[pos + 1] == 'u') + { + pos += 2; + cp = 0x10000 + ((cp - 0xD800) << 10) + (hex4() - 0xDC00); + } + append_utf8(out, cp); + break; + } + default: out += e; break; // \" \\ \/ + } + } + expect('"'); + return out; + } + + Json read_value() + { + skip_ws(); + if (pos >= s.size()) + throw std::runtime_error("json: unexpected end"); + + Json v; + char c = s[pos]; + if (c == '{') + { + v.type = Json::Object; + ++pos; + skip_ws(); + if (pos < s.size() && s[pos] == '}') + { + ++pos; + return v; + } + for (;;) + { + v.keys.push_back(read_string()); + expect(':'); + v.items.push_back(read_value()); + skip_ws(); + if (pos < s.size() && s[pos] == ',') + { + ++pos; + continue; + } + expect('}'); + return v; + } + } + if (c == '[') + { + v.type = Json::Array; + ++pos; + skip_ws(); + if (pos < s.size() && s[pos] == ']') + { + ++pos; + return v; + } + for (;;) + { + v.items.push_back(read_value()); + skip_ws(); + if (pos < s.size() && s[pos] == ',') + { + ++pos; + continue; + } + expect(']'); + return v; + } + } + if (c == '"') + { + v.type = Json::String; + v.text = read_string(); + return v; + } + if (s.substr(pos, 4) == "true" || s.substr(pos, 5) == "false") + { + v.type = Json::Bool; + v.boolean = s[pos] == 't'; + pos += v.boolean ? 4 : 5; + return v; + } + if (s.substr(pos, 4) == "null") + { + pos += 4; + return v; + } + + size_t start = pos; + while (pos < s.size() && (std::isdigit((unsigned char)s[pos]) || s[pos] == '-' || s[pos] == '+' || s[pos] == '.' || s[pos] == 'e' || s[pos] == 'E')) + ++pos; + if (pos == start) + throw std::runtime_error(std::format("json: unexpected '{}' at {}", c, pos)); + v.type = Json::Number; + v.text = std::string(s.substr(start, pos - start)); + return v; + } + + public: + static Json parse(std::string_view text) + { + JsonReader r; + r.s = text; + return r.read_value(); + } + }; + + // stdin/stdout via Win32 handles rather than iostreams: the protocol needs + // exact byte counts, and CRT text mode would rewrite \n in both directions. + HANDLE in_handle = GetStdHandle(STD_INPUT_HANDLE); + HANDLE out_handle = GetStdHandle(STD_OUTPUT_HANDLE); + + bool read_bytes(char* dst, size_t size) + { + while (size) + { + DWORD got = 0; + if (!ReadFile(in_handle, dst, (DWORD)size, &got, nullptr) || got == 0) + return false; + dst += got; + size -= got; + } + return true; + } + + bool read_message(std::string& body) + { + size_t length = 0; + std::string line; + for (;;) + { + char c; + if (!read_bytes(&c, 1)) + return false; + if (c != '\n') + { + line += c; + continue; + } + if (!line.empty() && line.back() == '\r') + line.pop_back(); + if (line.empty()) + break; + if (line.rfind("Content-Length:", 0) == 0) + length = std::stoull(line.substr(15)); + line.clear(); + } + + body.resize(length); + return read_bytes(body.data(), length); + } + + void write_message(const std::string& body) + { + std::string msg = "Content-Length: " + std::to_string(body.size()) + "\r\n\r\n" + body; + DWORD written = 0; + WriteFile(out_handle, msg.data(), (DWORD)msg.size(), &written, nullptr); + } + + // True when the client has already sent more: used to coalesce a burst of + // didChange notifications (one per keystroke) into a single revalidation. + bool input_pending() + { + DWORD available = 0; + return PeekNamedPipe(in_handle, nullptr, 0, nullptr, &available, nullptr) && available > 0; + } + + std::string json_escape(std::string_view s) + { + std::string out; + out.reserve(s.size() + 2); + for (unsigned char c : s) + { + switch (c) + { + case '"': out += "\\\""; break; + case '\\': out += "\\\\"; break; + case '\n': out += "\\n"; break; + case '\r': out += "\\r"; break; + case '\t': out += "\\t"; break; + default: + if (c < 0x20) + out += std::format("\\u{:04x}", c); + else + out += (char)c; + } + } + return out; + } + + std::string id_json(const Json& id) + { + if (id.type == Json::String) + return "\"" + json_escape(id.text) + "\""; + if (id.type == Json::Number) + return id.text; + return "null"; + } + + std::string uri_to_path(std::string_view uri) + { + if (uri.rfind("file:///", 0) == 0) + uri.remove_prefix(8); + + std::string out; + for (size_t i = 0; i < uri.size(); ++i) + { + if (uri[i] == '%' && i + 2 < uri.size()) + { + out += (char)std::stoi(std::string(uri.substr(i + 1, 2)), nullptr, 16); + i += 2; + } + else + out += uri[i] == '/' ? '\\' : uri[i]; + } + return out; + } + + std::string path_to_uri(const std::filesystem::path& p) + { + return "file:///" + p.generic_string(); + } + + // Case-insensitive key: VS and the filesystem disagree on drive-letter case. + std::string key_of(const std::filesystem::path& p) + { + std::string s = std::filesystem::absolute(p).lexically_normal().generic_string(); + std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return (char)std::tolower(c); }); + return s; + } + + std::string read_file(const std::filesystem::path& p) + { + std::ifstream f(p, std::ios::binary); + return std::string(std::istreambuf_iterator(f), {}); + } + + class Server + { + struct OpenDoc + { + std::string uri; + std::string text; + }; + + std::map open_docs; // key_of(path) -> buffer + std::map last_good; // key_of(path) -> last parse without syntax errors + std::map published_uri; // key_of(path) -> uri that currently shows diagnostics + std::filesystem::path root; // the sigs/ directory being validated + bool dirty = false; + bool shutting_down = false; + + // Validation is cross-file (a condition in one .sig names a struct from + // another), so the root is the enclosing sigs/ directory, not the file. + void adopt_root(const std::filesystem::path& file) + { + if (!root.empty() && key_of(file).rfind(key_of(root) + "/", 0) == 0) + return; + + std::filesystem::path dir = file.parent_path(); + for (auto p = dir; !p.empty() && p != p.root_path(); p = p.parent_path()) + { + std::string name = p.filename().string(); + std::transform(name.begin(), name.end(), name.begin(), [](unsigned char c) { return (char)std::tolower(c); }); + if (name == "sigs") + { + dir = p; + break; + } + } + root = dir; + last_good.clear(); + } + + static std::pair word_range(const std::string& text, size_t line, size_t column) + { + size_t pos = 0; + for (size_t l = 1; l < line && pos != std::string::npos; ++l) + { + pos = text.find('\n', pos); + if (pos != std::string::npos) + ++pos; + } + if (pos == std::string::npos) + return { column, column + 1 }; + + size_t start = pos + column; + size_t end = start; + while (end < text.size() && (std::isalnum((unsigned char)text[end]) || text[end] == '_')) + ++end; + return { column, column + std::max(end - start, 1) }; + } + + void revalidate() + { + dirty = false; + if (root.empty()) + return; + + diagnostics().clear(); + + std::map files; + std::map texts; + std::set broken; + Parsed merged; + + std::error_code ec; + for (auto it = std::filesystem::recursive_directory_iterator(root, ec); + !ec && it != std::filesystem::recursive_directory_iterator(); it.increment(ec)) + { + if (!it->is_regular_file() || it->path().extension() != ".sig") + continue; + + std::filesystem::path path = std::filesystem::absolute(it->path()).lexically_normal(); + std::string key = key_of(path); + auto doc = open_docs.find(key); + const std::string& text = texts[key] = doc != open_docs.end() ? doc->second.text : read_file(path); + files[key] = path; + + size_t before = diagnostics().count(); + Parsed p; + try + { + p = parse_text(text, path.string()); + } + catch (std::exception& e) + { + diagnostics().error(SourceLocation{ path.string(), 1, 1 }, e.what()); + } + + // A half-typed file would otherwise vanish from the merged model + // and make every other file's references to it look broken. + if (diagnostics().count() != before) + { + broken.insert(key); + if (auto good = last_good.find(key); good != last_good.end()) + { + Parsed copy = good->second; + merged.merge(copy); + } + } + else + { + last_good[key] = p; + merged.merge(p); + } + } + + size_t parse_errors = diagnostics().count(); + try + { + validate(merged); + } + catch (std::exception& e) + { + diagnostics().error(SourceLocation{}, std::string("internal: ") + e.what()); + } + + std::map> per_file; + const auto& all = diagnostics().entries(); + for (size_t i = 0; i < all.size(); ++i) + { + const auto& d = all[i]; + if (d.loc.file.empty()) + continue; + + std::string key = key_of(d.loc.file); + // Validation of a file with syntax errors ran against its last + // good version, so those locations are stale; only its syntax + // errors are current. + if (i >= parse_errors && broken.count(key)) + continue; + + size_t line = d.loc.line ? d.loc.line - 1 : 0; + size_t col = d.loc.column ? d.loc.column - 1 : 0; + auto [c0, c1] = texts.count(key) ? word_range(texts[key], d.loc.line, col) : std::pair{ col, col + 1 }; + + per_file[key].push_back(std::format( + R"({{"range":{{"start":{{"line":{},"character":{}}},"end":{{"line":{},"character":{}}}}},"severity":1,"source":"sig","message":"{}"}})", + line, c0, line, c1, json_escape(d.message))); + } + + std::map now_published; + auto publish = [&](const std::string& uri, const std::vector& diags) + { + std::string list; + for (const auto& d : diags) + list += (list.empty() ? "" : ",") + d; + write_message(std::format(R"({{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{{"uri":"{}","diagnostics":[{}]}}}})", + json_escape(uri), list)); + }; + + for (const auto& [key, diags] : per_file) + { + auto doc = open_docs.find(key); + std::string uri = doc != open_docs.end() ? doc->second.uri + : files.count(key) ? path_to_uri(files[key]) : path_to_uri(key); + publish(uri, diags); + now_published[key] = uri; + } + + // Clear files that had diagnostics last time and have none now. + for (const auto& [key, uri] : published_uri) + if (!now_published.count(key)) + publish(uri, {}); + + published_uri = std::move(now_published); + } + + void respond(const Json& id, const std::string& result) + { + write_message(R"({"jsonrpc":"2.0","id":)" + id_json(id) + R"(,"result":)" + result + "}"); + } + + void respond_error(const Json& id, int code, const std::string& message) + { + write_message(R"({"jsonrpc":"2.0","id":)" + id_json(id) + R"(,"error":{"code":)" + std::to_string(code) + + R"(,"message":")" + json_escape(message) + "\"}}"); + } + + void set_doc(const std::string& uri, std::string text) + { + std::filesystem::path path = uri_to_path(uri); + adopt_root(path); + open_docs[key_of(path)] = { uri, std::move(text) }; + dirty = true; + } + + public: + // Returns false when the client asked the server to exit. + bool handle(const Json& msg) + { + if (msg.type != Json::Object || !msg.has("method")) + return true; // a response to something we never send + + const std::string& method = msg["method"].text; + bool is_request = msg.has("id"); + const Json* params = msg.has("params") ? &msg["params"] : nullptr; + + if (method == "initialize") + { + respond(msg["id"], R"({"capabilities":{"textDocumentSync":{"openClose":true,"change":1,"save":{"includeText":false}}},)" + R"("serverInfo":{"name":"sigparser","version":"1"}})"); + } + else if (method == "shutdown") + { + shutting_down = true; + respond(msg["id"], "null"); + } + else if (method == "exit") + { + return false; + } + else if (method == "textDocument/didOpen" && params) + { + const auto& td = (*params)["textDocument"]; + set_doc(td["uri"].text, td["text"].text); + } + else if (method == "textDocument/didChange" && params) + { + const auto& changes = (*params)["contentChanges"]; + if (!changes.items.empty()) + set_doc((*params)["textDocument"]["uri"].text, changes.items.back()["text"].text); + } + else if (method == "textDocument/didClose" && params) + { + // Closed files are validated from disk from now on. + open_docs.erase(key_of(uri_to_path((*params)["textDocument"]["uri"].text))); + dirty = true; + } + else if (method == "textDocument/didSave" || method == "workspace/didChangeWatchedFiles") + { + dirty = true; + } + else if (is_request) + { + respond_error(msg["id"], -32601, "method not supported: " + method); + } + + return true; + } + + void idle() + { + if (dirty && !shutting_down && !input_pending()) + revalidate(); + } + }; +} + +int run_lsp() +{ + Server server; + std::string body; + + while (read_message(body)) + { + try + { + if (!server.handle(JsonReader::parse(body))) + return 0; + server.idle(); + } + catch (std::exception& e) + { + std::cerr << "sigparser --lsp: " << e.what() << std::endl; + } + } + return 0; +} diff --git a/sources/SIGParser/LSP.h b/sources/SIGParser/LSP.h new file mode 100644 index 000000000..7825cba35 --- /dev/null +++ b/sources/SIGParser/LSP.h @@ -0,0 +1,6 @@ +#pragma once + +// `sigparser --lsp`: a Language Server Protocol server over stdin/stdout that +// publishes the same diagnostics a generator run would report, live, for the +// unsaved contents of open editor buffers. +int run_lsp(); diff --git a/sources/SIGParser/Main.cpp b/sources/SIGParser/Main.cpp index da52f0049..440a01c54 100644 --- a/sources/SIGParser/Main.cpp +++ b/sources/SIGParser/Main.cpp @@ -7,6 +7,7 @@ import cereal.json; #include "Parsing.h" #include "Diagnostics.h" #include "Validate.h" +#include "LSP.h" static const std::string cpp_path = "../../sources/HAL/autogen"; static const std::string shaders_path = "../../workdir/shaders"; @@ -272,8 +273,11 @@ static void assign_rtx_ids(Parsed& parsed) assign(parsed.raytrace_pass); } -int main() +int main(int argc, char** argv) { + if (argc > 1 && std::string_view(argv[1]) == "--lsp") + return run_lsp(); + std::map user_lists; int result = 0; @@ -283,6 +287,7 @@ int main() iterate_files("sigs/", [&](std::wstring filename) { + std::wcout << ((filename + L"\n")) << std::endl; auto p = parse(filename); // Stamp every top-level named item with its source .sig path so diff --git a/sources/SIGParser/Parsing.cpp b/sources/SIGParser/Parsing.cpp index bdb1dfd61..cc772b473 100644 --- a/sources/SIGParser/Parsing.cpp +++ b/sources/SIGParser/Parsing.cpp @@ -516,46 +516,52 @@ class TreeShapeListener : public SIGBaseListener } }; -Parsed parse(std::wstring filename) +static Parsed parse_input(ANTLRInputStream& input, const std::string& file) { - std::wcout << ((filename + L"\n")) << std::endl; Parsed parsed; - std::string file = std::filesystem::absolute(filename).string(); - { - std::ifstream stream; - stream.open(filename); + CollectingErrorListener errors(file); - if (!stream.is_open()) - { - diagnostics().error(SourceLocation{ file }, "cannot open file"); - return parsed; - } + SIGLexer lexer(&input); + lexer.removeErrorListeners(); + lexer.addErrorListener(&errors); - CollectingErrorListener errors(file); + CommonTokenStream tokens(&lexer); + SIGParser parser(&tokens); + parser.removeErrorListeners(); + parser.addErrorListener(&errors); - ANTLRInputStream input(stream); - SIGLexer lexer(&input); - lexer.removeErrorListeners(); - lexer.addErrorListener(&errors); + SIGParser::ParseContext* tree = parser.parse(); - CommonTokenStream tokens(&lexer); - SIGParser parser(&tokens); - parser.removeErrorListeners(); - parser.addErrorListener(&errors); + // Walking an error-recovered tree only builds a misleading partial model + // for the validator to complain about; the syntax errors are the report. + if (lexer.getNumberOfSyntaxErrors() == 0 && parser.getNumberOfSyntaxErrors() == 0) + { + TreeShapeListener listener(parsed, file); + antlr4::tree::ParseTreeWalker walker; - SIGParser::ParseContext* tree = parser.parse(); + walker.walk(&listener, tree); + } - // Walking an error-recovered tree only builds a misleading partial model - // for the validator to complain about; the syntax errors are the report. - if (lexer.getNumberOfSyntaxErrors() == 0 && parser.getNumberOfSyntaxErrors() == 0) - { - TreeShapeListener listener(parsed, file); - antlr4::tree::ParseTreeWalker walker; + return parsed; +} - walker.walk(&listener, tree); - } +Parsed parse(std::wstring filename) +{ + std::string file = std::filesystem::absolute(filename).string(); - stream.close(); + std::ifstream stream(filename); + if (!stream.is_open()) + { + diagnostics().error(SourceLocation{ file }, "cannot open file"); + return {}; } - return parsed; + + ANTLRInputStream input(stream); + return parse_input(input, file); +} + +Parsed parse_text(const std::string& text, const std::string& file) +{ + ANTLRInputStream input(text); + return parse_input(input, file); } diff --git a/sources/SIGParser/Parsing.h b/sources/SIGParser/Parsing.h index a028d0d5c..598b7b9fe 100644 --- a/sources/SIGParser/Parsing.h +++ b/sources/SIGParser/Parsing.h @@ -1,2 +1,6 @@ #include "Parsed.h" Parsed parse(std::wstring filename); + +// Parses in-memory text (an unsaved editor buffer); `file` is only used for +// diagnostic locations. +Parsed parse_text(const std::string& text, const std::string& file); diff --git a/sources/SIGParser/editor/SigLanguageClient.cs b/sources/SIGParser/editor/SigLanguageClient.cs new file mode 100644 index 000000000..83e36ac96 --- /dev/null +++ b/sources/SIGParser/editor/SigLanguageClient.cs @@ -0,0 +1,98 @@ +// VS side of the SIG language server: registers a content type for .sig files +// and starts `sigparser.exe --lsp` for them. Compiled by gen_vs_extension.py. +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.Diagnostics; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.VisualStudio.LanguageServer.Client; +using Microsoft.VisualStudio.Threading; +using Microsoft.VisualStudio.Utilities; + +namespace Spectrum.Sig +{ + public static class SigContentDefinition + { + // Based on the remote-content type so the TextMate grammar shipped in + // the same VSIX keeps colouring these files. + [Export] + [Name("sig")] + [BaseDefinition(CodeRemoteContentDefinition.CodeRemoteContentTypeName)] + internal static ContentTypeDefinition SigContentType = null; + + [Export] + [FileExtension(".sig")] + [ContentType("sig")] + internal static FileExtensionToContentTypeDefinition SigFileExtension = null; + } + + [ContentType("sig")] + [Export(typeof(ILanguageClient))] + public class SigLanguageClient : ILanguageClient + { + public string Name => "SIG Language Server"; + public IEnumerable ConfigurationSections => null; + public object InitializationOptions => null; + public IEnumerable FilesToWatch => null; + public bool ShowNotificationOnInitializeFailed => true; + + public event AsyncEventHandler StartAsync; + public event AsyncEventHandler StopAsync; + + // SIG_LSP_SERVER overrides the bundled server, e.g. to point at a + // freshly built bin/profile/sigparser.exe without reinstalling. + static string ServerPath() + { + string overridePath = Environment.GetEnvironmentVariable("SIG_LSP_SERVER"); + if (!string.IsNullOrEmpty(overridePath) && File.Exists(overridePath)) + return overridePath; + + string dir = Path.GetDirectoryName(typeof(SigLanguageClient).Assembly.Location); + return Path.Combine(dir, "server", "sigparser.exe"); + } + + public Task ActivateAsync(CancellationToken token) + { + string exe = ServerPath(); + var info = new ProcessStartInfo + { + FileName = exe, + Arguments = "--lsp", + WorkingDirectory = Path.GetDirectoryName(exe), + RedirectStandardInput = true, + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true, + }; + + var process = new Process { StartInfo = info }; + if (!process.Start()) + return Task.FromResult(null); + + // Drain stderr so a chatty server can never block on a full pipe. + process.ErrorDataReceived += (s, e) => { if (e.Data != null) Debug.WriteLine("[sig-lsp] " + e.Data); }; + process.BeginErrorReadLine(); + + return Task.FromResult(new Connection(process.StandardOutput.BaseStream, process.StandardInput.BaseStream)); + } + + public async Task OnLoadedAsync() + { + if (StartAsync != null) + await StartAsync.InvokeAsync(this, EventArgs.Empty); + } + + public Task OnServerInitializedAsync() => Task.CompletedTask; + + public Task OnServerInitializeFailedAsync(ILanguageClientInitializationInfo initializationState) + { + return Task.FromResult(new InitializationFailureContext + { + FailureMessage = "SIG language server failed to start: " + initializationState.StatusMessage, + }); + } + } +} diff --git a/sources/SIGParser/editor/gen_vs_extension.py b/sources/SIGParser/editor/gen_vs_extension.py index 7730dff17..8d28caebe 100644 --- a/sources/SIGParser/editor/gen_vs_extension.py +++ b/sources/SIGParser/editor/gen_vs_extension.py @@ -7,9 +7,14 @@ cannot say -- which TextMate scope a token gets, and which spans embed another language -- is the small table in SCOPES below. +The VSIX also carries the language server: SigLanguageClient.cs (compiled here +with the csc and VS assemblies from the local install) starts the bundled +bin/profile/sigparser.exe with --lsp, which reports the same errors a generator +run would, live, in the Error List. + Outputs (bin/editor/): sig.vsix install by double-clicking - folder/SIG/... same content as a no-VSIX install; see --install-user + folder/SIG/... highlighting only, as a no-VSIX install; see --install-user Usage: python gen_vs_extension.py # regenerate bin/editor/ @@ -17,11 +22,14 @@ """ import argparse +import glob import json import os import re import shutil +import subprocess import sys +import tempfile import time import zipfile @@ -532,7 +540,54 @@ def build_theme(): # --- packaging ------------------------------------------------------------------ -def vsix_files(version, grammar_json, langcfg_json, theme_xml): +# --- language server ----------------------------------------------------------- + +VS_ROOT = r"C:\Program Files\Microsoft Visual Studio\18\Community" +SERVER_EXE = os.path.normpath(os.path.join(HERE, "..", "..", "..", "bin", "profile", "sigparser.exe")) +CLIENT_SOURCE = os.path.join(HERE, "SigLanguageClient.cs") + + +def compile_client(out_dir): + ide = os.path.join(VS_ROOT, "Common7", "IDE") + ref = r"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8" + refs = [ + os.path.join(ref, n) for n in ("mscorlib.dll", "System.dll", "System.Core.dll", + "System.ComponentModel.Composition.dll", r"Facades\netstandard.dll", + r"Facades\System.Runtime.dll", r"Facades\System.Threading.Tasks.dll") + ] + [ + os.path.join(ide, r"CommonExtensions\Microsoft\LanguageServer\Microsoft.VisualStudio.LanguageServer.Client.dll"), + os.path.join(ide, r"CommonExtensions\Microsoft\Editor\Microsoft.VisualStudio.CoreUtility.dll"), + os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Threading.17.x\Microsoft.VisualStudio.Threading.dll"), + ] + out = os.path.join(out_dir, "SigLanguageClient.dll") + csc = os.path.join(VS_ROOT, r"MSBuild\Current\Bin\Roslyn\csc.exe") + # CS0067: StopAsync is required by ILanguageClient but never raised. + cmd = [csc, "-nologo", "-noconfig", "-nostdlib", "-target:library", "-nowarn:67", "-out:" + out, CLIENT_SOURCE] + cmd += ["-r:" + r for r in refs] + subprocess.run(cmd, check=True) + return out + + +def dll_closure(exe): + """The exe plus every DLL it (transitively) imports that sits next to it -- + i.e. the vcpkg runtime DLLs, not system ones.""" + dumpbin = sorted(glob.glob(os.path.join(VS_ROOT, r"VC\Tools\MSVC\*\bin\Hostx64\x64\dumpbin.exe")))[-1] + folder = os.path.dirname(exe) + result, pending = [], [exe] + while pending: + path = pending.pop() + if path in result: + continue + result.append(path) + out = subprocess.run([dumpbin, "/dependents", path], capture_output=True, text=True, check=True).stdout + for name in re.findall(r"^\s+(\S+\.dll)\s*$", out, flags=re.M | re.I): + local = os.path.join(folder, name) + if os.path.exists(local): + pending.append(local) + return result + + +def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): pkgdef = ( "// Generated by gen_vs_extension.py\r\n" "[$RootKey$\\TextMate\\Repositories]\r\n" @@ -546,7 +601,7 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml): {EXT_NAME} - Syntax highlighting for Spectrum .sig files, generated from SIG.g4. + Syntax highlighting and live diagnostics for Spectrum .sig files. @@ -555,6 +610,7 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml): + @@ -568,6 +624,8 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml): '' '' '' + '' + '' '' ) @@ -578,8 +636,9 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml): # Named like the starter kit's cpp.tmLanguage.tmTheme, next to its grammar. "Grammars/sig.tmLanguage.tmTheme": theme_xml, "language-configuration.json": langcfg_json, + **binaries, } - size = sum(len(v.encode("utf-8")) for v in files.values()) + size = sum(len(v.encode("utf-8") if isinstance(v, str) else v) for v in files.values()) ext_dir = "[installdir]\\Common7\\IDE\\Extensions\\SpectrumSIG" deps = {"Microsoft.VisualStudio.Component.CoreEditor": "[17.0,19.0)"} @@ -629,7 +688,21 @@ def main(): os.makedirs(OUT_DIR, exist_ok=True) theme_xml = build_theme() - files, content_types = vsix_files(version, grammar_json, langcfg_json, theme_xml) + + # The server is whatever sigparser.exe was last built, so rebuild SIGParser + # (Profile) before regenerating when its validation changed. + if not os.path.exists(SERVER_EXE): + sys.exit(f"missing {SERVER_EXE}: build the sigparser project (Profile) first") + binaries = {} + with tempfile.TemporaryDirectory() as tmp: + with open(compile_client(tmp), "rb") as f: + binaries["SigLanguageClient.dll"] = f.read() + server_files = dll_closure(SERVER_EXE) + for path in server_files: + with open(path, "rb") as f: + binaries["server/" + os.path.basename(path)] = f.read() + + files, content_types = vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries) vsix_path = os.path.join(OUT_DIR, "sig.vsix") with zipfile.ZipFile(vsix_path, "w", zipfile.ZIP_DEFLATED) as z: @@ -650,6 +723,7 @@ def main(): print(f"keywords: {len(a['decl'])} declaration, {sum(len(v) for v in a['groups'].values())} grouped, " f"{len(a['other'])} other; {len(a['operators'])} operators; brackets {a['pairs']}") + print("server: " + ", ".join(os.path.basename(p) for p in server_files)) print(f"wrote {vsix_path} (version {version})") if args.install_user: From 1595b76a568687b192278720cef8d24e27c8af8c Mon Sep 17 00:00:00 2001 From: cheater Date: Wed, 23 Sep 2026 13:12:03 +0300 Subject: [PATCH 2/5] wip --- .agents/skills/add-render-pass/SKILL.md | 9 +- .claude/skills/add-render-pass/SKILL.md | 9 +- sources/SIGParser/.antlr/SIG.interp | 4 +- sources/SIGParser/.antlr/SIGBaseListener.h | 4 +- sources/SIGParser/.antlr/SIGBaseVisitor.h | 2 +- sources/SIGParser/.antlr/SIGListener.h | 4 +- sources/SIGParser/.antlr/SIGParser.cpp | 1161 +++++++++--------- sources/SIGParser/.antlr/SIGParser.h | 18 +- sources/SIGParser/.antlr/SIGVisitor.h | 2 +- sources/SIGParser/Diagnostics.h | 12 +- sources/SIGParser/LSP.cpp | 958 ++++++++++++++- sources/SIGParser/Parsed.h | 13 +- sources/SIGParser/Parsing.cpp | 51 +- sources/SIGParser/Parsing.h | 3 + sources/SIGParser/SIG.g4 | 7 +- sources/SIGParser/Validate.cpp | 170 ++- sources/SIGParser/Validate.h | 10 + sources/SIGParser/editor/gen_vs_extension.py | 15 +- sources/SIGParser/sigs/BlueNoise.sig | 2 +- sources/SIGParser/sigs/DenoiserShadow.sig | 6 +- sources/SIGParser/sigs/FSR.sig | 4 +- sources/SIGParser/sigs/MipMapping.sig | 26 +- sources/SIGParser/sigs/SS_Shadow.sig | 2 +- sources/SIGParser/sigs/UpscalingDLSSRR.sig | 2 +- sources/SIGParser/sigs/WorkGraph.sig | 2 +- sources/SIGParser/sigs/brdf.sig | 2 +- sources/SIGParser/sigs/ddgi.sig | 10 +- sources/SIGParser/sigs/font_render.sig | 6 +- sources/SIGParser/sigs/material_preview.sig | 8 +- sources/SIGParser/sigs/meshrender.sig | 12 +- sources/SIGParser/sigs/nrd_sig_test.sig | 68 +- sources/SIGParser/sigs/pssm.sig | 12 +- sources/SIGParser/sigs/raytracing.sig | 32 +- sources/SIGParser/sigs/scene.sig | 12 +- sources/SIGParser/sigs/sky.sig | 12 +- sources/SIGParser/sigs/smaa.sig | 18 +- sources/SIGParser/sigs/stenciler.sig | 34 +- sources/SIGParser/sigs/ui.sig | 40 +- sources/SIGParser/sigs/voxel.sig | 18 +- sources/SIGParser/sigs/vsm.sig | 52 +- 40 files changed, 2001 insertions(+), 831 deletions(-) diff --git a/.agents/skills/add-render-pass/SKILL.md b/.agents/skills/add-render-pass/SKILL.md index 52d27aff2..89ab49cfb 100644 --- a/.agents/skills/add-render-pass/SKILL.md +++ b/.agents/skills/add-render-pass/SKILL.md @@ -35,7 +35,8 @@ struct MyEffectData } ``` -**PSO** — `compute = ` refers to `workdir/shaders/.hlsl`, and +**PSO** — `compute = "/.hlsl"` is a quoted path relative to +`workdir/shaders`, extension included (the generator rejects a missing file), and `[EntryPoint = X]` selects the function within it. One shader file can back several PSOs through different entry points: @@ -45,7 +46,7 @@ ComputePSO MyEffectCompute root = DefaultLayout; [EntryPoint = CS] - compute = my_effect; + compute = "my_effect.hlsl"; } ``` @@ -148,8 +149,8 @@ no D3D12 output at all. In that pass, use the owning `HAL::Texture` directly. ## 4. Write the shader -Create `workdir/shaders/.hlsl` matching the PSO's `compute =`/`vertex =`/ -`pixel =` value, with a function named by `[EntryPoint = ...]`. Include the +Create the file the PSO's `compute =`/`vertex =`/`pixel =` string names under +`workdir/shaders/`, with a function named by `[EntryPoint = ...]`. Include the generated binding header so the struct layout stays in sync with the `.sig`. ## 5. Register in a pipeline diff --git a/.claude/skills/add-render-pass/SKILL.md b/.claude/skills/add-render-pass/SKILL.md index 677e14046..b0bb39fdc 100644 --- a/.claude/skills/add-render-pass/SKILL.md +++ b/.claude/skills/add-render-pass/SKILL.md @@ -35,7 +35,8 @@ struct MyEffectData } ``` -**PSO** — `compute = ` refers to `workdir/shaders/.hlsl`, and +**PSO** — `compute = "/.hlsl"` is a quoted path relative to +`workdir/shaders`, extension included (the generator rejects a missing file), and `[EntryPoint = X]` selects the function within it. One shader file can back several PSOs through different entry points: @@ -45,7 +46,7 @@ ComputePSO MyEffectCompute root = DefaultLayout; [EntryPoint = CS] - compute = my_effect; + compute = "my_effect.hlsl"; } ``` @@ -148,8 +149,8 @@ no D3D12 output at all. In that pass, use the owning `HAL::Texture` directly. ## 4. Write the shader -Create `workdir/shaders/.hlsl` matching the PSO's `compute =`/`vertex =`/ -`pixel =` value, with a function named by `[EntryPoint = ...]`. Include the +Create the file the PSO's `compute =`/`vertex =`/`pixel =` string names under +`workdir/shaders/`, with a function named by `[EntryPoint = ...]`. Include the generated binding header so the struct layout stays in sync with the `.sig`. ## 5. Register in a pipeline diff --git a/sources/SIGParser/.antlr/SIG.interp b/sources/SIGParser/.antlr/SIG.interp index d1dc6aac6..9a839fdaf 100644 --- a/sources/SIGParser/.antlr/SIG.interp +++ b/sources/SIGParser/.antlr/SIG.interp @@ -244,7 +244,7 @@ value_id value_id_ignore type_id insert_block -path_id +shader_path inherit layout_stat layout_block @@ -303,4 +303,4 @@ bool_type atn: -[4, 1, 102, 824, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 198, 8, 0, 10, 0, 12, 0, 201, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 213, 8, 2, 1, 2, 1, 2, 1, 2, 4, 2, 218, 8, 2, 11, 2, 12, 2, 219, 1, 2, 1, 2, 3, 2, 224, 8, 2, 1, 3, 4, 3, 227, 8, 3, 11, 3, 12, 3, 228, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 236, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 257, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 263, 8, 12, 10, 12, 12, 12, 266, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 274, 8, 14, 1, 14, 1, 14, 1, 15, 5, 15, 279, 8, 15, 10, 15, 12, 15, 282, 9, 15, 1, 15, 1, 15, 1, 15, 3, 15, 287, 8, 15, 1, 15, 1, 15, 3, 15, 291, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 5, 18, 306, 8, 18, 10, 18, 12, 18, 309, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 315, 8, 18, 1, 18, 1, 18, 1, 19, 5, 19, 320, 8, 19, 10, 19, 12, 19, 323, 9, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 5, 20, 331, 8, 20, 10, 20, 12, 20, 334, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 5, 22, 344, 8, 22, 10, 22, 12, 22, 347, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 5, 24, 359, 8, 24, 10, 24, 12, 24, 362, 9, 24, 1, 24, 3, 24, 365, 8, 24, 1, 24, 3, 24, 368, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 3, 30, 383, 8, 30, 1, 30, 1, 30, 5, 30, 387, 8, 30, 10, 30, 12, 30, 390, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 401, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 407, 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 5, 35, 415, 8, 35, 10, 35, 12, 35, 418, 9, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 426, 8, 36, 10, 36, 12, 36, 429, 9, 36, 1, 37, 1, 37, 1, 37, 3, 37, 434, 8, 37, 1, 38, 5, 38, 437, 8, 38, 10, 38, 12, 38, 440, 9, 38, 1, 39, 1, 39, 1, 39, 3, 39, 445, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 454, 8, 40, 1, 41, 5, 41, 457, 8, 41, 10, 41, 12, 41, 460, 9, 41, 1, 42, 5, 42, 463, 8, 42, 10, 42, 12, 42, 466, 9, 42, 1, 42, 1, 42, 1, 42, 3, 42, 471, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 488, 8, 45, 1, 46, 5, 46, 491, 8, 46, 10, 46, 12, 46, 494, 9, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 508, 8, 49, 10, 49, 12, 49, 511, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 5, 51, 521, 8, 51, 10, 51, 12, 51, 524, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 535, 8, 52, 1, 53, 5, 53, 538, 8, 53, 10, 53, 12, 53, 541, 9, 53, 1, 54, 5, 54, 544, 8, 54, 10, 54, 12, 54, 547, 9, 54, 1, 54, 1, 54, 1, 54, 3, 54, 552, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 565, 8, 55, 1, 56, 5, 56, 568, 8, 56, 10, 56, 12, 56, 571, 9, 56, 1, 57, 5, 57, 574, 8, 57, 10, 57, 12, 57, 577, 9, 57, 1, 57, 1, 57, 1, 57, 3, 57, 582, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 590, 8, 58, 1, 59, 5, 59, 593, 8, 59, 10, 59, 12, 59, 596, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 601, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 5, 63, 615, 8, 63, 10, 63, 12, 63, 618, 9, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 3, 64, 628, 8, 64, 1, 65, 5, 65, 631, 8, 65, 10, 65, 12, 65, 634, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 647, 8, 67, 1, 68, 5, 68, 650, 8, 68, 10, 68, 12, 68, 653, 9, 68, 1, 69, 5, 69, 656, 8, 69, 10, 69, 12, 69, 659, 9, 69, 1, 69, 1, 69, 1, 69, 3, 69, 664, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 3, 70, 673, 8, 70, 1, 71, 5, 71, 676, 8, 71, 10, 71, 12, 71, 679, 9, 71, 1, 72, 5, 72, 682, 8, 72, 10, 72, 12, 72, 685, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 690, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 698, 8, 73, 1, 74, 5, 74, 701, 8, 74, 10, 74, 12, 74, 704, 9, 74, 1, 75, 5, 75, 707, 8, 75, 10, 75, 12, 75, 710, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 715, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 5, 76, 722, 8, 76, 10, 76, 12, 76, 725, 9, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 3, 77, 733, 8, 77, 1, 78, 5, 78, 736, 8, 78, 10, 78, 12, 78, 739, 9, 78, 1, 79, 5, 79, 742, 8, 79, 10, 79, 12, 79, 745, 9, 79, 1, 79, 1, 79, 1, 79, 3, 79, 750, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 5, 80, 757, 8, 80, 10, 80, 12, 80, 760, 9, 80, 1, 80, 1, 80, 1, 80, 3, 80, 765, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 5, 81, 772, 8, 81, 10, 81, 12, 81, 775, 9, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 781, 8, 81, 1, 82, 5, 82, 784, 8, 82, 10, 82, 12, 82, 787, 9, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 3, 84, 798, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, 804, 8, 85, 1, 86, 5, 86, 807, 8, 86, 10, 86, 12, 86, 810, 9, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 18, 280, 307, 321, 332, 345, 416, 427, 464, 522, 545, 575, 616, 657, 683, 708, 723, 743, 758, 0, 91, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 0, 5, 4, 0, 46, 47, 49, 54, 60, 60, 64, 65, 1, 0, 9, 13, 1, 0, 14, 26, 1, 0, 27, 45, 1, 0, 70, 71, 848, 0, 199, 1, 0, 0, 0, 2, 204, 1, 0, 0, 0, 4, 223, 1, 0, 0, 0, 6, 226, 1, 0, 0, 0, 8, 235, 1, 0, 0, 0, 10, 237, 1, 0, 0, 0, 12, 241, 1, 0, 0, 0, 14, 245, 1, 0, 0, 0, 16, 247, 1, 0, 0, 0, 18, 249, 1, 0, 0, 0, 20, 251, 1, 0, 0, 0, 22, 254, 1, 0, 0, 0, 24, 258, 1, 0, 0, 0, 26, 269, 1, 0, 0, 0, 28, 271, 1, 0, 0, 0, 30, 280, 1, 0, 0, 0, 32, 294, 1, 0, 0, 0, 34, 298, 1, 0, 0, 0, 36, 307, 1, 0, 0, 0, 38, 321, 1, 0, 0, 0, 40, 332, 1, 0, 0, 0, 42, 340, 1, 0, 0, 0, 44, 345, 1, 0, 0, 0, 46, 353, 1, 0, 0, 0, 48, 355, 1, 0, 0, 0, 50, 369, 1, 0, 0, 0, 52, 371, 1, 0, 0, 0, 54, 373, 1, 0, 0, 0, 56, 375, 1, 0, 0, 0, 58, 377, 1, 0, 0, 0, 60, 379, 1, 0, 0, 0, 62, 400, 1, 0, 0, 0, 64, 406, 1, 0, 0, 0, 66, 408, 1, 0, 0, 0, 68, 410, 1, 0, 0, 0, 70, 416, 1, 0, 0, 0, 72, 421, 1, 0, 0, 0, 74, 433, 1, 0, 0, 0, 76, 438, 1, 0, 0, 0, 78, 441, 1, 0, 0, 0, 80, 453, 1, 0, 0, 0, 82, 458, 1, 0, 0, 0, 84, 464, 1, 0, 0, 0, 86, 476, 1, 0, 0, 0, 88, 480, 1, 0, 0, 0, 90, 487, 1, 0, 0, 0, 92, 492, 1, 0, 0, 0, 94, 495, 1, 0, 0, 0, 96, 501, 1, 0, 0, 0, 98, 503, 1, 0, 0, 0, 100, 514, 1, 0, 0, 0, 102, 522, 1, 0, 0, 0, 104, 534, 1, 0, 0, 0, 106, 539, 1, 0, 0, 0, 108, 545, 1, 0, 0, 0, 110, 564, 1, 0, 0, 0, 112, 569, 1, 0, 0, 0, 114, 575, 1, 0, 0, 0, 116, 589, 1, 0, 0, 0, 118, 594, 1, 0, 0, 0, 120, 597, 1, 0, 0, 0, 122, 606, 1, 0, 0, 0, 124, 608, 1, 0, 0, 0, 126, 616, 1, 0, 0, 0, 128, 627, 1, 0, 0, 0, 130, 632, 1, 0, 0, 0, 132, 635, 1, 0, 0, 0, 134, 646, 1, 0, 0, 0, 136, 651, 1, 0, 0, 0, 138, 657, 1, 0, 0, 0, 140, 672, 1, 0, 0, 0, 142, 677, 1, 0, 0, 0, 144, 683, 1, 0, 0, 0, 146, 697, 1, 0, 0, 0, 148, 702, 1, 0, 0, 0, 150, 708, 1, 0, 0, 0, 152, 723, 1, 0, 0, 0, 154, 732, 1, 0, 0, 0, 156, 737, 1, 0, 0, 0, 158, 743, 1, 0, 0, 0, 160, 758, 1, 0, 0, 0, 162, 780, 1, 0, 0, 0, 164, 785, 1, 0, 0, 0, 166, 788, 1, 0, 0, 0, 168, 794, 1, 0, 0, 0, 170, 803, 1, 0, 0, 0, 172, 808, 1, 0, 0, 0, 174, 811, 1, 0, 0, 0, 176, 817, 1, 0, 0, 0, 178, 819, 1, 0, 0, 0, 180, 821, 1, 0, 0, 0, 182, 198, 3, 78, 39, 0, 183, 198, 3, 84, 42, 0, 184, 198, 3, 94, 47, 0, 185, 198, 3, 138, 69, 0, 186, 198, 3, 108, 54, 0, 187, 198, 3, 114, 57, 0, 188, 198, 3, 120, 60, 0, 189, 198, 3, 144, 72, 0, 190, 198, 3, 150, 75, 0, 191, 198, 3, 160, 80, 0, 192, 198, 3, 158, 79, 0, 193, 198, 3, 166, 83, 0, 194, 198, 3, 174, 87, 0, 195, 198, 3, 2, 1, 0, 196, 198, 5, 97, 0, 0, 197, 182, 1, 0, 0, 0, 197, 183, 1, 0, 0, 0, 197, 184, 1, 0, 0, 0, 197, 185, 1, 0, 0, 0, 197, 186, 1, 0, 0, 0, 197, 187, 1, 0, 0, 0, 197, 188, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 190, 1, 0, 0, 0, 197, 191, 1, 0, 0, 0, 197, 192, 1, 0, 0, 0, 197, 193, 1, 0, 0, 0, 197, 194, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 196, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 202, 1, 0, 0, 0, 201, 199, 1, 0, 0, 0, 202, 203, 5, 0, 0, 1, 203, 1, 1, 0, 0, 0, 204, 205, 5, 1, 0, 0, 205, 206, 3, 52, 26, 0, 206, 207, 3, 20, 10, 0, 207, 208, 5, 61, 0, 0, 208, 3, 1, 0, 0, 0, 209, 210, 3, 56, 28, 0, 210, 211, 5, 2, 0, 0, 211, 213, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 217, 3, 16, 8, 0, 215, 216, 5, 48, 0, 0, 216, 218, 3, 16, 8, 0, 217, 215, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 224, 1, 0, 0, 0, 221, 224, 3, 18, 9, 0, 222, 224, 3, 6, 3, 0, 223, 212, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 222, 1, 0, 0, 0, 224, 5, 1, 0, 0, 0, 225, 227, 3, 8, 4, 0, 226, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 7, 1, 0, 0, 0, 230, 236, 3, 10, 5, 0, 231, 236, 3, 60, 30, 0, 232, 236, 3, 12, 6, 0, 233, 236, 3, 62, 31, 0, 234, 236, 3, 14, 7, 0, 235, 230, 1, 0, 0, 0, 235, 231, 1, 0, 0, 0, 235, 232, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 234, 1, 0, 0, 0, 236, 9, 1, 0, 0, 0, 237, 238, 3, 56, 28, 0, 238, 239, 5, 2, 0, 0, 239, 240, 3, 62, 31, 0, 240, 11, 1, 0, 0, 0, 241, 242, 3, 52, 26, 0, 242, 243, 5, 62, 0, 0, 243, 244, 3, 52, 26, 0, 244, 13, 1, 0, 0, 0, 245, 246, 7, 0, 0, 0, 246, 15, 1, 0, 0, 0, 247, 248, 3, 62, 31, 0, 248, 17, 1, 0, 0, 0, 249, 250, 5, 96, 0, 0, 250, 19, 1, 0, 0, 0, 251, 252, 5, 63, 0, 0, 252, 253, 3, 4, 2, 0, 253, 21, 1, 0, 0, 0, 254, 256, 3, 52, 26, 0, 255, 257, 3, 20, 10, 0, 256, 255, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 23, 1, 0, 0, 0, 258, 259, 5, 68, 0, 0, 259, 264, 3, 22, 11, 0, 260, 261, 5, 3, 0, 0, 261, 263, 3, 22, 11, 0, 262, 260, 1, 0, 0, 0, 263, 266, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 267, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 267, 268, 5, 69, 0, 0, 268, 25, 1, 0, 0, 0, 269, 270, 5, 93, 0, 0, 270, 27, 1, 0, 0, 0, 271, 273, 5, 68, 0, 0, 272, 274, 3, 26, 13, 0, 273, 272, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 5, 69, 0, 0, 276, 29, 1, 0, 0, 0, 277, 279, 3, 24, 12, 0, 278, 277, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 3, 66, 33, 0, 284, 286, 3, 52, 26, 0, 285, 287, 3, 28, 14, 0, 286, 285, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 289, 5, 63, 0, 0, 289, 291, 3, 62, 31, 0, 290, 288, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 61, 0, 0, 293, 31, 1, 0, 0, 0, 294, 295, 5, 86, 0, 0, 295, 296, 3, 52, 26, 0, 296, 297, 5, 61, 0, 0, 297, 33, 1, 0, 0, 0, 298, 299, 5, 4, 0, 0, 299, 300, 3, 52, 26, 0, 300, 301, 5, 63, 0, 0, 301, 302, 3, 62, 31, 0, 302, 303, 5, 61, 0, 0, 303, 35, 1, 0, 0, 0, 304, 306, 3, 24, 12, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 311, 5, 5, 0, 0, 311, 314, 3, 52, 26, 0, 312, 313, 5, 63, 0, 0, 313, 315, 3, 98, 49, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 5, 61, 0, 0, 317, 37, 1, 0, 0, 0, 318, 320, 3, 24, 12, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 6, 0, 0, 325, 326, 5, 63, 0, 0, 326, 327, 3, 98, 49, 0, 327, 328, 5, 61, 0, 0, 328, 39, 1, 0, 0, 0, 329, 331, 3, 24, 12, 0, 330, 329, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 335, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 335, 336, 5, 7, 0, 0, 336, 337, 5, 63, 0, 0, 337, 338, 3, 98, 49, 0, 338, 339, 5, 61, 0, 0, 339, 41, 1, 0, 0, 0, 340, 341, 5, 99, 0, 0, 341, 43, 1, 0, 0, 0, 342, 344, 3, 24, 12, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 349, 3, 178, 89, 0, 349, 350, 5, 63, 0, 0, 350, 351, 3, 62, 31, 0, 351, 352, 5, 61, 0, 0, 352, 45, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, 354, 47, 1, 0, 0, 0, 355, 364, 3, 46, 23, 0, 356, 360, 5, 52, 0, 0, 357, 359, 3, 58, 29, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 365, 5, 51, 0, 0, 364, 356, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 368, 3, 42, 21, 0, 367, 366, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 49, 1, 0, 0, 0, 369, 370, 5, 92, 0, 0, 370, 51, 1, 0, 0, 0, 371, 372, 5, 92, 0, 0, 372, 53, 1, 0, 0, 0, 373, 374, 5, 92, 0, 0, 374, 55, 1, 0, 0, 0, 375, 376, 5, 92, 0, 0, 376, 57, 1, 0, 0, 0, 377, 378, 5, 92, 0, 0, 378, 59, 1, 0, 0, 0, 379, 380, 5, 92, 0, 0, 380, 382, 5, 64, 0, 0, 381, 383, 3, 64, 32, 0, 382, 381, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 388, 1, 0, 0, 0, 384, 385, 5, 3, 0, 0, 385, 387, 3, 64, 32, 0, 386, 384, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, 392, 5, 65, 0, 0, 392, 61, 1, 0, 0, 0, 393, 401, 3, 176, 88, 0, 394, 401, 5, 92, 0, 0, 395, 401, 5, 93, 0, 0, 396, 401, 5, 94, 0, 0, 397, 401, 3, 180, 90, 0, 398, 401, 3, 60, 30, 0, 399, 401, 3, 98, 49, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 63, 1, 0, 0, 0, 402, 407, 5, 92, 0, 0, 403, 407, 5, 93, 0, 0, 404, 407, 5, 94, 0, 0, 405, 407, 3, 180, 90, 0, 406, 402, 1, 0, 0, 0, 406, 403, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 405, 1, 0, 0, 0, 407, 65, 1, 0, 0, 0, 408, 409, 3, 48, 24, 0, 409, 67, 1, 0, 0, 0, 410, 411, 5, 102, 0, 0, 411, 69, 1, 0, 0, 0, 412, 413, 5, 92, 0, 0, 413, 415, 5, 57, 0, 0, 414, 412, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 419, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 419, 420, 5, 92, 0, 0, 420, 71, 1, 0, 0, 0, 421, 422, 5, 8, 0, 0, 422, 427, 3, 50, 25, 0, 423, 424, 5, 3, 0, 0, 424, 426, 3, 50, 25, 0, 425, 423, 1, 0, 0, 0, 426, 429, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 428, 73, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 430, 434, 3, 32, 16, 0, 431, 434, 3, 34, 17, 0, 432, 434, 5, 97, 0, 0, 433, 430, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 433, 432, 1, 0, 0, 0, 434, 75, 1, 0, 0, 0, 435, 437, 3, 74, 37, 0, 436, 435, 1, 0, 0, 0, 437, 440, 1, 0, 0, 0, 438, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 77, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 441, 442, 5, 73, 0, 0, 442, 444, 3, 52, 26, 0, 443, 445, 3, 72, 36, 0, 444, 443, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 5, 66, 0, 0, 447, 448, 3, 76, 38, 0, 448, 449, 5, 67, 0, 0, 449, 79, 1, 0, 0, 0, 450, 454, 3, 30, 15, 0, 451, 454, 3, 68, 34, 0, 452, 454, 5, 97, 0, 0, 453, 450, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 81, 1, 0, 0, 0, 455, 457, 3, 80, 40, 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 83, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, 24, 12, 0, 462, 461, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 465, 467, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 467, 468, 5, 74, 0, 0, 468, 470, 3, 52, 26, 0, 469, 471, 3, 72, 36, 0, 470, 469, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 5, 66, 0, 0, 473, 474, 3, 82, 41, 0, 474, 475, 5, 67, 0, 0, 475, 85, 1, 0, 0, 0, 476, 477, 3, 66, 33, 0, 477, 478, 3, 52, 26, 0, 478, 479, 5, 61, 0, 0, 479, 87, 1, 0, 0, 0, 480, 481, 5, 89, 0, 0, 481, 482, 3, 52, 26, 0, 482, 483, 5, 61, 0, 0, 483, 89, 1, 0, 0, 0, 484, 488, 3, 86, 43, 0, 485, 488, 3, 88, 44, 0, 486, 488, 5, 97, 0, 0, 487, 484, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 486, 1, 0, 0, 0, 488, 91, 1, 0, 0, 0, 489, 491, 3, 90, 45, 0, 490, 489, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 93, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 495, 496, 5, 87, 0, 0, 496, 497, 3, 52, 26, 0, 497, 498, 5, 66, 0, 0, 498, 499, 3, 92, 46, 0, 499, 500, 5, 67, 0, 0, 500, 95, 1, 0, 0, 0, 501, 502, 3, 62, 31, 0, 502, 97, 1, 0, 0, 0, 503, 504, 5, 66, 0, 0, 504, 509, 3, 96, 48, 0, 505, 506, 5, 3, 0, 0, 506, 508, 3, 96, 48, 0, 507, 505, 1, 0, 0, 0, 508, 511, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 512, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 512, 513, 5, 67, 0, 0, 513, 99, 1, 0, 0, 0, 514, 515, 5, 90, 0, 0, 515, 516, 5, 63, 0, 0, 516, 517, 3, 52, 26, 0, 517, 518, 5, 61, 0, 0, 518, 101, 1, 0, 0, 0, 519, 521, 3, 24, 12, 0, 520, 519, 1, 0, 0, 0, 521, 524, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 523, 525, 1, 0, 0, 0, 524, 522, 1, 0, 0, 0, 525, 526, 3, 176, 88, 0, 526, 527, 5, 63, 0, 0, 527, 528, 3, 70, 35, 0, 528, 529, 5, 61, 0, 0, 529, 103, 1, 0, 0, 0, 530, 535, 3, 100, 50, 0, 531, 535, 3, 102, 51, 0, 532, 535, 3, 36, 18, 0, 533, 535, 5, 97, 0, 0, 534, 530, 1, 0, 0, 0, 534, 531, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 533, 1, 0, 0, 0, 535, 105, 1, 0, 0, 0, 536, 538, 3, 104, 52, 0, 537, 536, 1, 0, 0, 0, 538, 541, 1, 0, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 107, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 542, 544, 3, 24, 12, 0, 543, 542, 1, 0, 0, 0, 544, 547, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 546, 548, 1, 0, 0, 0, 547, 545, 1, 0, 0, 0, 548, 549, 5, 75, 0, 0, 549, 551, 3, 52, 26, 0, 550, 552, 3, 72, 36, 0, 551, 550, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 5, 66, 0, 0, 554, 555, 3, 106, 53, 0, 555, 556, 5, 67, 0, 0, 556, 109, 1, 0, 0, 0, 557, 565, 3, 100, 50, 0, 558, 565, 3, 102, 51, 0, 559, 565, 3, 36, 18, 0, 560, 565, 3, 38, 19, 0, 561, 565, 3, 40, 20, 0, 562, 565, 3, 44, 22, 0, 563, 565, 5, 97, 0, 0, 564, 557, 1, 0, 0, 0, 564, 558, 1, 0, 0, 0, 564, 559, 1, 0, 0, 0, 564, 560, 1, 0, 0, 0, 564, 561, 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 564, 563, 1, 0, 0, 0, 565, 111, 1, 0, 0, 0, 566, 568, 3, 110, 55, 0, 567, 566, 1, 0, 0, 0, 568, 571, 1, 0, 0, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 113, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 572, 574, 3, 24, 12, 0, 573, 572, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 576, 578, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 578, 579, 5, 76, 0, 0, 579, 581, 3, 52, 26, 0, 580, 582, 3, 72, 36, 0, 581, 580, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 584, 5, 66, 0, 0, 584, 585, 3, 112, 56, 0, 585, 586, 5, 67, 0, 0, 586, 115, 1, 0, 0, 0, 587, 590, 3, 100, 50, 0, 588, 590, 5, 97, 0, 0, 589, 587, 1, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 117, 1, 0, 0, 0, 591, 593, 3, 116, 58, 0, 592, 591, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 119, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 597, 598, 5, 77, 0, 0, 598, 600, 3, 52, 26, 0, 599, 601, 3, 72, 36, 0, 600, 599, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 603, 5, 66, 0, 0, 603, 604, 3, 118, 59, 0, 604, 605, 5, 67, 0, 0, 605, 121, 1, 0, 0, 0, 606, 607, 7, 1, 0, 0, 607, 123, 1, 0, 0, 0, 608, 609, 3, 122, 61, 0, 609, 610, 5, 63, 0, 0, 610, 611, 3, 62, 31, 0, 611, 612, 5, 61, 0, 0, 612, 125, 1, 0, 0, 0, 613, 615, 3, 24, 12, 0, 614, 613, 1, 0, 0, 0, 615, 618, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 619, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 619, 620, 5, 80, 0, 0, 620, 621, 3, 66, 33, 0, 621, 622, 3, 52, 26, 0, 622, 623, 5, 61, 0, 0, 623, 127, 1, 0, 0, 0, 624, 628, 3, 124, 62, 0, 625, 628, 3, 126, 63, 0, 626, 628, 5, 97, 0, 0, 627, 624, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 627, 626, 1, 0, 0, 0, 628, 129, 1, 0, 0, 0, 629, 631, 3, 128, 64, 0, 630, 629, 1, 0, 0, 0, 631, 634, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 131, 1, 0, 0, 0, 634, 632, 1, 0, 0, 0, 635, 636, 5, 79, 0, 0, 636, 637, 3, 52, 26, 0, 637, 638, 5, 66, 0, 0, 638, 639, 3, 130, 65, 0, 639, 640, 5, 67, 0, 0, 640, 133, 1, 0, 0, 0, 641, 647, 3, 100, 50, 0, 642, 647, 3, 102, 51, 0, 643, 647, 3, 36, 18, 0, 644, 647, 3, 132, 66, 0, 645, 647, 5, 97, 0, 0, 646, 641, 1, 0, 0, 0, 646, 642, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 646, 645, 1, 0, 0, 0, 647, 135, 1, 0, 0, 0, 648, 650, 3, 134, 67, 0, 649, 648, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 137, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 654, 656, 3, 24, 12, 0, 655, 654, 1, 0, 0, 0, 656, 659, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 657, 655, 1, 0, 0, 0, 658, 660, 1, 0, 0, 0, 659, 657, 1, 0, 0, 0, 660, 661, 5, 78, 0, 0, 661, 663, 3, 52, 26, 0, 662, 664, 3, 72, 36, 0, 663, 662, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 5, 66, 0, 0, 666, 667, 3, 136, 68, 0, 667, 668, 5, 67, 0, 0, 668, 139, 1, 0, 0, 0, 669, 673, 3, 102, 51, 0, 670, 673, 5, 97, 0, 0, 671, 673, 3, 44, 22, 0, 672, 669, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 672, 671, 1, 0, 0, 0, 673, 141, 1, 0, 0, 0, 674, 676, 3, 140, 70, 0, 675, 674, 1, 0, 0, 0, 676, 679, 1, 0, 0, 0, 677, 675, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 143, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 680, 682, 3, 24, 12, 0, 681, 680, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 683, 681, 1, 0, 0, 0, 684, 686, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 686, 687, 5, 82, 0, 0, 687, 689, 3, 52, 26, 0, 688, 690, 3, 72, 36, 0, 689, 688, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 692, 5, 66, 0, 0, 692, 693, 3, 142, 71, 0, 693, 694, 5, 67, 0, 0, 694, 145, 1, 0, 0, 0, 695, 698, 3, 102, 51, 0, 696, 698, 5, 97, 0, 0, 697, 695, 1, 0, 0, 0, 697, 696, 1, 0, 0, 0, 698, 147, 1, 0, 0, 0, 699, 701, 3, 146, 73, 0, 700, 699, 1, 0, 0, 0, 701, 704, 1, 0, 0, 0, 702, 700, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 149, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 705, 707, 3, 24, 12, 0, 706, 705, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 711, 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 711, 712, 5, 81, 0, 0, 712, 714, 3, 52, 26, 0, 713, 715, 3, 72, 36, 0, 714, 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 5, 66, 0, 0, 717, 718, 3, 148, 74, 0, 718, 719, 5, 67, 0, 0, 719, 151, 1, 0, 0, 0, 720, 722, 3, 24, 12, 0, 721, 720, 1, 0, 0, 0, 722, 725, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 723, 721, 1, 0, 0, 0, 724, 726, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 726, 727, 3, 66, 33, 0, 727, 728, 3, 52, 26, 0, 728, 729, 5, 61, 0, 0, 729, 153, 1, 0, 0, 0, 730, 733, 3, 152, 76, 0, 731, 733, 5, 97, 0, 0, 732, 730, 1, 0, 0, 0, 732, 731, 1, 0, 0, 0, 733, 155, 1, 0, 0, 0, 734, 736, 3, 154, 77, 0, 735, 734, 1, 0, 0, 0, 736, 739, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 157, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 740, 742, 3, 24, 12, 0, 741, 740, 1, 0, 0, 0, 742, 745, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 743, 741, 1, 0, 0, 0, 744, 746, 1, 0, 0, 0, 745, 743, 1, 0, 0, 0, 746, 747, 5, 84, 0, 0, 747, 749, 3, 52, 26, 0, 748, 750, 3, 72, 36, 0, 749, 748, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 5, 66, 0, 0, 752, 753, 3, 156, 78, 0, 753, 754, 5, 67, 0, 0, 754, 159, 1, 0, 0, 0, 755, 757, 3, 24, 12, 0, 756, 755, 1, 0, 0, 0, 757, 760, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 758, 756, 1, 0, 0, 0, 759, 761, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 761, 762, 5, 83, 0, 0, 762, 764, 3, 52, 26, 0, 763, 765, 3, 72, 36, 0, 764, 763, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 5, 66, 0, 0, 767, 768, 3, 156, 78, 0, 768, 769, 5, 67, 0, 0, 769, 161, 1, 0, 0, 0, 770, 772, 3, 24, 12, 0, 771, 770, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 776, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 777, 3, 52, 26, 0, 777, 778, 5, 61, 0, 0, 778, 781, 1, 0, 0, 0, 779, 781, 5, 97, 0, 0, 780, 773, 1, 0, 0, 0, 780, 779, 1, 0, 0, 0, 781, 163, 1, 0, 0, 0, 782, 784, 3, 162, 81, 0, 783, 782, 1, 0, 0, 0, 784, 787, 1, 0, 0, 0, 785, 783, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 165, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 788, 789, 5, 85, 0, 0, 789, 790, 3, 52, 26, 0, 790, 791, 5, 66, 0, 0, 791, 792, 3, 164, 82, 0, 792, 793, 5, 67, 0, 0, 793, 167, 1, 0, 0, 0, 794, 797, 3, 52, 26, 0, 795, 796, 5, 63, 0, 0, 796, 798, 3, 62, 31, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 5, 61, 0, 0, 800, 169, 1, 0, 0, 0, 801, 804, 3, 168, 84, 0, 802, 804, 5, 97, 0, 0, 803, 801, 1, 0, 0, 0, 803, 802, 1, 0, 0, 0, 804, 171, 1, 0, 0, 0, 805, 807, 3, 170, 85, 0, 806, 805, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 173, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 812, 5, 91, 0, 0, 812, 813, 3, 52, 26, 0, 813, 814, 5, 66, 0, 0, 814, 815, 3, 172, 86, 0, 815, 816, 5, 67, 0, 0, 816, 175, 1, 0, 0, 0, 817, 818, 7, 2, 0, 0, 818, 177, 1, 0, 0, 0, 819, 820, 7, 3, 0, 0, 820, 179, 1, 0, 0, 0, 821, 822, 7, 4, 0, 0, 822, 181, 1, 0, 0, 0, 77, 197, 199, 212, 219, 223, 228, 235, 256, 264, 273, 280, 286, 290, 307, 314, 321, 332, 345, 360, 364, 367, 382, 388, 400, 406, 416, 427, 433, 438, 444, 453, 458, 464, 470, 487, 492, 509, 522, 534, 539, 545, 551, 564, 569, 575, 581, 589, 594, 600, 616, 627, 632, 646, 651, 657, 663, 672, 677, 683, 689, 697, 702, 708, 714, 723, 732, 737, 743, 749, 758, 764, 773, 780, 785, 797, 803, 808] \ No newline at end of file +[4, 1, 102, 817, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 198, 8, 0, 10, 0, 12, 0, 201, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 213, 8, 2, 1, 2, 1, 2, 1, 2, 4, 2, 218, 8, 2, 11, 2, 12, 2, 219, 1, 2, 1, 2, 3, 2, 224, 8, 2, 1, 3, 4, 3, 227, 8, 3, 11, 3, 12, 3, 228, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 236, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 257, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 263, 8, 12, 10, 12, 12, 12, 266, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 274, 8, 14, 1, 14, 1, 14, 1, 15, 5, 15, 279, 8, 15, 10, 15, 12, 15, 282, 9, 15, 1, 15, 1, 15, 1, 15, 3, 15, 287, 8, 15, 1, 15, 1, 15, 3, 15, 291, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 5, 18, 306, 8, 18, 10, 18, 12, 18, 309, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 315, 8, 18, 1, 18, 1, 18, 1, 19, 5, 19, 320, 8, 19, 10, 19, 12, 19, 323, 9, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 5, 20, 331, 8, 20, 10, 20, 12, 20, 334, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 5, 22, 344, 8, 22, 10, 22, 12, 22, 347, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 5, 24, 359, 8, 24, 10, 24, 12, 24, 362, 9, 24, 1, 24, 3, 24, 365, 8, 24, 1, 24, 3, 24, 368, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 3, 30, 383, 8, 30, 1, 30, 1, 30, 5, 30, 387, 8, 30, 10, 30, 12, 30, 390, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 401, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 407, 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 419, 8, 36, 10, 36, 12, 36, 422, 9, 36, 1, 37, 1, 37, 1, 37, 3, 37, 427, 8, 37, 1, 38, 5, 38, 430, 8, 38, 10, 38, 12, 38, 433, 9, 38, 1, 39, 1, 39, 1, 39, 3, 39, 438, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 447, 8, 40, 1, 41, 5, 41, 450, 8, 41, 10, 41, 12, 41, 453, 9, 41, 1, 42, 5, 42, 456, 8, 42, 10, 42, 12, 42, 459, 9, 42, 1, 42, 1, 42, 1, 42, 3, 42, 464, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 481, 8, 45, 1, 46, 5, 46, 484, 8, 46, 10, 46, 12, 46, 487, 9, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 501, 8, 49, 10, 49, 12, 49, 504, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 5, 51, 514, 8, 51, 10, 51, 12, 51, 517, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 528, 8, 52, 1, 53, 5, 53, 531, 8, 53, 10, 53, 12, 53, 534, 9, 53, 1, 54, 5, 54, 537, 8, 54, 10, 54, 12, 54, 540, 9, 54, 1, 54, 1, 54, 1, 54, 3, 54, 545, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 558, 8, 55, 1, 56, 5, 56, 561, 8, 56, 10, 56, 12, 56, 564, 9, 56, 1, 57, 5, 57, 567, 8, 57, 10, 57, 12, 57, 570, 9, 57, 1, 57, 1, 57, 1, 57, 3, 57, 575, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 583, 8, 58, 1, 59, 5, 59, 586, 8, 59, 10, 59, 12, 59, 589, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 594, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 5, 63, 608, 8, 63, 10, 63, 12, 63, 611, 9, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 3, 64, 621, 8, 64, 1, 65, 5, 65, 624, 8, 65, 10, 65, 12, 65, 627, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 640, 8, 67, 1, 68, 5, 68, 643, 8, 68, 10, 68, 12, 68, 646, 9, 68, 1, 69, 5, 69, 649, 8, 69, 10, 69, 12, 69, 652, 9, 69, 1, 69, 1, 69, 1, 69, 3, 69, 657, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 3, 70, 666, 8, 70, 1, 71, 5, 71, 669, 8, 71, 10, 71, 12, 71, 672, 9, 71, 1, 72, 5, 72, 675, 8, 72, 10, 72, 12, 72, 678, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 683, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 691, 8, 73, 1, 74, 5, 74, 694, 8, 74, 10, 74, 12, 74, 697, 9, 74, 1, 75, 5, 75, 700, 8, 75, 10, 75, 12, 75, 703, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 708, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 5, 76, 715, 8, 76, 10, 76, 12, 76, 718, 9, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 3, 77, 726, 8, 77, 1, 78, 5, 78, 729, 8, 78, 10, 78, 12, 78, 732, 9, 78, 1, 79, 5, 79, 735, 8, 79, 10, 79, 12, 79, 738, 9, 79, 1, 79, 1, 79, 1, 79, 3, 79, 743, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 5, 80, 750, 8, 80, 10, 80, 12, 80, 753, 9, 80, 1, 80, 1, 80, 1, 80, 3, 80, 758, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 5, 81, 765, 8, 81, 10, 81, 12, 81, 768, 9, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 774, 8, 81, 1, 82, 5, 82, 777, 8, 82, 10, 82, 12, 82, 780, 9, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 3, 84, 791, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, 797, 8, 85, 1, 86, 5, 86, 800, 8, 86, 10, 86, 12, 86, 803, 9, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 17, 280, 307, 321, 332, 345, 420, 457, 515, 538, 568, 609, 650, 676, 701, 716, 736, 751, 0, 91, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 0, 6, 4, 0, 46, 47, 49, 54, 60, 60, 64, 65, 2, 0, 92, 92, 95, 95, 1, 0, 9, 13, 1, 0, 14, 26, 1, 0, 27, 45, 1, 0, 70, 71, 840, 0, 199, 1, 0, 0, 0, 2, 204, 1, 0, 0, 0, 4, 223, 1, 0, 0, 0, 6, 226, 1, 0, 0, 0, 8, 235, 1, 0, 0, 0, 10, 237, 1, 0, 0, 0, 12, 241, 1, 0, 0, 0, 14, 245, 1, 0, 0, 0, 16, 247, 1, 0, 0, 0, 18, 249, 1, 0, 0, 0, 20, 251, 1, 0, 0, 0, 22, 254, 1, 0, 0, 0, 24, 258, 1, 0, 0, 0, 26, 269, 1, 0, 0, 0, 28, 271, 1, 0, 0, 0, 30, 280, 1, 0, 0, 0, 32, 294, 1, 0, 0, 0, 34, 298, 1, 0, 0, 0, 36, 307, 1, 0, 0, 0, 38, 321, 1, 0, 0, 0, 40, 332, 1, 0, 0, 0, 42, 340, 1, 0, 0, 0, 44, 345, 1, 0, 0, 0, 46, 353, 1, 0, 0, 0, 48, 355, 1, 0, 0, 0, 50, 369, 1, 0, 0, 0, 52, 371, 1, 0, 0, 0, 54, 373, 1, 0, 0, 0, 56, 375, 1, 0, 0, 0, 58, 377, 1, 0, 0, 0, 60, 379, 1, 0, 0, 0, 62, 400, 1, 0, 0, 0, 64, 406, 1, 0, 0, 0, 66, 408, 1, 0, 0, 0, 68, 410, 1, 0, 0, 0, 70, 412, 1, 0, 0, 0, 72, 414, 1, 0, 0, 0, 74, 426, 1, 0, 0, 0, 76, 431, 1, 0, 0, 0, 78, 434, 1, 0, 0, 0, 80, 446, 1, 0, 0, 0, 82, 451, 1, 0, 0, 0, 84, 457, 1, 0, 0, 0, 86, 469, 1, 0, 0, 0, 88, 473, 1, 0, 0, 0, 90, 480, 1, 0, 0, 0, 92, 485, 1, 0, 0, 0, 94, 488, 1, 0, 0, 0, 96, 494, 1, 0, 0, 0, 98, 496, 1, 0, 0, 0, 100, 507, 1, 0, 0, 0, 102, 515, 1, 0, 0, 0, 104, 527, 1, 0, 0, 0, 106, 532, 1, 0, 0, 0, 108, 538, 1, 0, 0, 0, 110, 557, 1, 0, 0, 0, 112, 562, 1, 0, 0, 0, 114, 568, 1, 0, 0, 0, 116, 582, 1, 0, 0, 0, 118, 587, 1, 0, 0, 0, 120, 590, 1, 0, 0, 0, 122, 599, 1, 0, 0, 0, 124, 601, 1, 0, 0, 0, 126, 609, 1, 0, 0, 0, 128, 620, 1, 0, 0, 0, 130, 625, 1, 0, 0, 0, 132, 628, 1, 0, 0, 0, 134, 639, 1, 0, 0, 0, 136, 644, 1, 0, 0, 0, 138, 650, 1, 0, 0, 0, 140, 665, 1, 0, 0, 0, 142, 670, 1, 0, 0, 0, 144, 676, 1, 0, 0, 0, 146, 690, 1, 0, 0, 0, 148, 695, 1, 0, 0, 0, 150, 701, 1, 0, 0, 0, 152, 716, 1, 0, 0, 0, 154, 725, 1, 0, 0, 0, 156, 730, 1, 0, 0, 0, 158, 736, 1, 0, 0, 0, 160, 751, 1, 0, 0, 0, 162, 773, 1, 0, 0, 0, 164, 778, 1, 0, 0, 0, 166, 781, 1, 0, 0, 0, 168, 787, 1, 0, 0, 0, 170, 796, 1, 0, 0, 0, 172, 801, 1, 0, 0, 0, 174, 804, 1, 0, 0, 0, 176, 810, 1, 0, 0, 0, 178, 812, 1, 0, 0, 0, 180, 814, 1, 0, 0, 0, 182, 198, 3, 78, 39, 0, 183, 198, 3, 84, 42, 0, 184, 198, 3, 94, 47, 0, 185, 198, 3, 138, 69, 0, 186, 198, 3, 108, 54, 0, 187, 198, 3, 114, 57, 0, 188, 198, 3, 120, 60, 0, 189, 198, 3, 144, 72, 0, 190, 198, 3, 150, 75, 0, 191, 198, 3, 160, 80, 0, 192, 198, 3, 158, 79, 0, 193, 198, 3, 166, 83, 0, 194, 198, 3, 174, 87, 0, 195, 198, 3, 2, 1, 0, 196, 198, 5, 97, 0, 0, 197, 182, 1, 0, 0, 0, 197, 183, 1, 0, 0, 0, 197, 184, 1, 0, 0, 0, 197, 185, 1, 0, 0, 0, 197, 186, 1, 0, 0, 0, 197, 187, 1, 0, 0, 0, 197, 188, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 190, 1, 0, 0, 0, 197, 191, 1, 0, 0, 0, 197, 192, 1, 0, 0, 0, 197, 193, 1, 0, 0, 0, 197, 194, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 196, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 202, 1, 0, 0, 0, 201, 199, 1, 0, 0, 0, 202, 203, 5, 0, 0, 1, 203, 1, 1, 0, 0, 0, 204, 205, 5, 1, 0, 0, 205, 206, 3, 52, 26, 0, 206, 207, 3, 20, 10, 0, 207, 208, 5, 61, 0, 0, 208, 3, 1, 0, 0, 0, 209, 210, 3, 56, 28, 0, 210, 211, 5, 2, 0, 0, 211, 213, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 217, 3, 16, 8, 0, 215, 216, 5, 48, 0, 0, 216, 218, 3, 16, 8, 0, 217, 215, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 224, 1, 0, 0, 0, 221, 224, 3, 18, 9, 0, 222, 224, 3, 6, 3, 0, 223, 212, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 222, 1, 0, 0, 0, 224, 5, 1, 0, 0, 0, 225, 227, 3, 8, 4, 0, 226, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 7, 1, 0, 0, 0, 230, 236, 3, 10, 5, 0, 231, 236, 3, 60, 30, 0, 232, 236, 3, 12, 6, 0, 233, 236, 3, 62, 31, 0, 234, 236, 3, 14, 7, 0, 235, 230, 1, 0, 0, 0, 235, 231, 1, 0, 0, 0, 235, 232, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 234, 1, 0, 0, 0, 236, 9, 1, 0, 0, 0, 237, 238, 3, 56, 28, 0, 238, 239, 5, 2, 0, 0, 239, 240, 3, 62, 31, 0, 240, 11, 1, 0, 0, 0, 241, 242, 3, 52, 26, 0, 242, 243, 5, 62, 0, 0, 243, 244, 3, 52, 26, 0, 244, 13, 1, 0, 0, 0, 245, 246, 7, 0, 0, 0, 246, 15, 1, 0, 0, 0, 247, 248, 3, 62, 31, 0, 248, 17, 1, 0, 0, 0, 249, 250, 5, 96, 0, 0, 250, 19, 1, 0, 0, 0, 251, 252, 5, 63, 0, 0, 252, 253, 3, 4, 2, 0, 253, 21, 1, 0, 0, 0, 254, 256, 3, 52, 26, 0, 255, 257, 3, 20, 10, 0, 256, 255, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 23, 1, 0, 0, 0, 258, 259, 5, 68, 0, 0, 259, 264, 3, 22, 11, 0, 260, 261, 5, 3, 0, 0, 261, 263, 3, 22, 11, 0, 262, 260, 1, 0, 0, 0, 263, 266, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 267, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 267, 268, 5, 69, 0, 0, 268, 25, 1, 0, 0, 0, 269, 270, 5, 93, 0, 0, 270, 27, 1, 0, 0, 0, 271, 273, 5, 68, 0, 0, 272, 274, 3, 26, 13, 0, 273, 272, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 5, 69, 0, 0, 276, 29, 1, 0, 0, 0, 277, 279, 3, 24, 12, 0, 278, 277, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 3, 66, 33, 0, 284, 286, 3, 52, 26, 0, 285, 287, 3, 28, 14, 0, 286, 285, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 289, 5, 63, 0, 0, 289, 291, 3, 62, 31, 0, 290, 288, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 61, 0, 0, 293, 31, 1, 0, 0, 0, 294, 295, 5, 86, 0, 0, 295, 296, 3, 52, 26, 0, 296, 297, 5, 61, 0, 0, 297, 33, 1, 0, 0, 0, 298, 299, 5, 4, 0, 0, 299, 300, 3, 52, 26, 0, 300, 301, 5, 63, 0, 0, 301, 302, 3, 62, 31, 0, 302, 303, 5, 61, 0, 0, 303, 35, 1, 0, 0, 0, 304, 306, 3, 24, 12, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 311, 5, 5, 0, 0, 311, 314, 3, 52, 26, 0, 312, 313, 5, 63, 0, 0, 313, 315, 3, 98, 49, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 5, 61, 0, 0, 317, 37, 1, 0, 0, 0, 318, 320, 3, 24, 12, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 6, 0, 0, 325, 326, 5, 63, 0, 0, 326, 327, 3, 98, 49, 0, 327, 328, 5, 61, 0, 0, 328, 39, 1, 0, 0, 0, 329, 331, 3, 24, 12, 0, 330, 329, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 335, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 335, 336, 5, 7, 0, 0, 336, 337, 5, 63, 0, 0, 337, 338, 3, 98, 49, 0, 338, 339, 5, 61, 0, 0, 339, 41, 1, 0, 0, 0, 340, 341, 5, 99, 0, 0, 341, 43, 1, 0, 0, 0, 342, 344, 3, 24, 12, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 349, 3, 178, 89, 0, 349, 350, 5, 63, 0, 0, 350, 351, 3, 62, 31, 0, 351, 352, 5, 61, 0, 0, 352, 45, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, 354, 47, 1, 0, 0, 0, 355, 364, 3, 46, 23, 0, 356, 360, 5, 52, 0, 0, 357, 359, 3, 58, 29, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 365, 5, 51, 0, 0, 364, 356, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 368, 3, 42, 21, 0, 367, 366, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 49, 1, 0, 0, 0, 369, 370, 5, 92, 0, 0, 370, 51, 1, 0, 0, 0, 371, 372, 5, 92, 0, 0, 372, 53, 1, 0, 0, 0, 373, 374, 5, 92, 0, 0, 374, 55, 1, 0, 0, 0, 375, 376, 5, 92, 0, 0, 376, 57, 1, 0, 0, 0, 377, 378, 5, 92, 0, 0, 378, 59, 1, 0, 0, 0, 379, 380, 5, 92, 0, 0, 380, 382, 5, 64, 0, 0, 381, 383, 3, 64, 32, 0, 382, 381, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 388, 1, 0, 0, 0, 384, 385, 5, 3, 0, 0, 385, 387, 3, 64, 32, 0, 386, 384, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, 392, 5, 65, 0, 0, 392, 61, 1, 0, 0, 0, 393, 401, 3, 176, 88, 0, 394, 401, 5, 92, 0, 0, 395, 401, 5, 93, 0, 0, 396, 401, 5, 94, 0, 0, 397, 401, 3, 180, 90, 0, 398, 401, 3, 60, 30, 0, 399, 401, 3, 98, 49, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 63, 1, 0, 0, 0, 402, 407, 5, 92, 0, 0, 403, 407, 5, 93, 0, 0, 404, 407, 5, 94, 0, 0, 405, 407, 3, 180, 90, 0, 406, 402, 1, 0, 0, 0, 406, 403, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 405, 1, 0, 0, 0, 407, 65, 1, 0, 0, 0, 408, 409, 3, 48, 24, 0, 409, 67, 1, 0, 0, 0, 410, 411, 5, 102, 0, 0, 411, 69, 1, 0, 0, 0, 412, 413, 7, 1, 0, 0, 413, 71, 1, 0, 0, 0, 414, 415, 5, 8, 0, 0, 415, 420, 3, 50, 25, 0, 416, 417, 5, 3, 0, 0, 417, 419, 3, 50, 25, 0, 418, 416, 1, 0, 0, 0, 419, 422, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 421, 73, 1, 0, 0, 0, 422, 420, 1, 0, 0, 0, 423, 427, 3, 32, 16, 0, 424, 427, 3, 34, 17, 0, 425, 427, 5, 97, 0, 0, 426, 423, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 426, 425, 1, 0, 0, 0, 427, 75, 1, 0, 0, 0, 428, 430, 3, 74, 37, 0, 429, 428, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 77, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 435, 5, 73, 0, 0, 435, 437, 3, 52, 26, 0, 436, 438, 3, 72, 36, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 5, 66, 0, 0, 440, 441, 3, 76, 38, 0, 441, 442, 5, 67, 0, 0, 442, 79, 1, 0, 0, 0, 443, 447, 3, 30, 15, 0, 444, 447, 3, 68, 34, 0, 445, 447, 5, 97, 0, 0, 446, 443, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447, 81, 1, 0, 0, 0, 448, 450, 3, 80, 40, 0, 449, 448, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 83, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 456, 3, 24, 12, 0, 455, 454, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 460, 461, 5, 74, 0, 0, 461, 463, 3, 52, 26, 0, 462, 464, 3, 72, 36, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466, 5, 66, 0, 0, 466, 467, 3, 82, 41, 0, 467, 468, 5, 67, 0, 0, 468, 85, 1, 0, 0, 0, 469, 470, 3, 66, 33, 0, 470, 471, 3, 52, 26, 0, 471, 472, 5, 61, 0, 0, 472, 87, 1, 0, 0, 0, 473, 474, 5, 89, 0, 0, 474, 475, 3, 52, 26, 0, 475, 476, 5, 61, 0, 0, 476, 89, 1, 0, 0, 0, 477, 481, 3, 86, 43, 0, 478, 481, 3, 88, 44, 0, 479, 481, 5, 97, 0, 0, 480, 477, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 479, 1, 0, 0, 0, 481, 91, 1, 0, 0, 0, 482, 484, 3, 90, 45, 0, 483, 482, 1, 0, 0, 0, 484, 487, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 93, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 488, 489, 5, 87, 0, 0, 489, 490, 3, 52, 26, 0, 490, 491, 5, 66, 0, 0, 491, 492, 3, 92, 46, 0, 492, 493, 5, 67, 0, 0, 493, 95, 1, 0, 0, 0, 494, 495, 3, 62, 31, 0, 495, 97, 1, 0, 0, 0, 496, 497, 5, 66, 0, 0, 497, 502, 3, 96, 48, 0, 498, 499, 5, 3, 0, 0, 499, 501, 3, 96, 48, 0, 500, 498, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 505, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 506, 5, 67, 0, 0, 506, 99, 1, 0, 0, 0, 507, 508, 5, 90, 0, 0, 508, 509, 5, 63, 0, 0, 509, 510, 3, 52, 26, 0, 510, 511, 5, 61, 0, 0, 511, 101, 1, 0, 0, 0, 512, 514, 3, 24, 12, 0, 513, 512, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 516, 518, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 518, 519, 3, 176, 88, 0, 519, 520, 5, 63, 0, 0, 520, 521, 3, 70, 35, 0, 521, 522, 5, 61, 0, 0, 522, 103, 1, 0, 0, 0, 523, 528, 3, 100, 50, 0, 524, 528, 3, 102, 51, 0, 525, 528, 3, 36, 18, 0, 526, 528, 5, 97, 0, 0, 527, 523, 1, 0, 0, 0, 527, 524, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 527, 526, 1, 0, 0, 0, 528, 105, 1, 0, 0, 0, 529, 531, 3, 104, 52, 0, 530, 529, 1, 0, 0, 0, 531, 534, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 107, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, 537, 3, 24, 12, 0, 536, 535, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 539, 541, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 542, 5, 75, 0, 0, 542, 544, 3, 52, 26, 0, 543, 545, 3, 72, 36, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 66, 0, 0, 547, 548, 3, 106, 53, 0, 548, 549, 5, 67, 0, 0, 549, 109, 1, 0, 0, 0, 550, 558, 3, 100, 50, 0, 551, 558, 3, 102, 51, 0, 552, 558, 3, 36, 18, 0, 553, 558, 3, 38, 19, 0, 554, 558, 3, 40, 20, 0, 555, 558, 3, 44, 22, 0, 556, 558, 5, 97, 0, 0, 557, 550, 1, 0, 0, 0, 557, 551, 1, 0, 0, 0, 557, 552, 1, 0, 0, 0, 557, 553, 1, 0, 0, 0, 557, 554, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 556, 1, 0, 0, 0, 558, 111, 1, 0, 0, 0, 559, 561, 3, 110, 55, 0, 560, 559, 1, 0, 0, 0, 561, 564, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 113, 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 565, 567, 3, 24, 12, 0, 566, 565, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 569, 571, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 572, 5, 76, 0, 0, 572, 574, 3, 52, 26, 0, 573, 575, 3, 72, 36, 0, 574, 573, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 5, 66, 0, 0, 577, 578, 3, 112, 56, 0, 578, 579, 5, 67, 0, 0, 579, 115, 1, 0, 0, 0, 580, 583, 3, 100, 50, 0, 581, 583, 5, 97, 0, 0, 582, 580, 1, 0, 0, 0, 582, 581, 1, 0, 0, 0, 583, 117, 1, 0, 0, 0, 584, 586, 3, 116, 58, 0, 585, 584, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 119, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 77, 0, 0, 591, 593, 3, 52, 26, 0, 592, 594, 3, 72, 36, 0, 593, 592, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 5, 66, 0, 0, 596, 597, 3, 118, 59, 0, 597, 598, 5, 67, 0, 0, 598, 121, 1, 0, 0, 0, 599, 600, 7, 2, 0, 0, 600, 123, 1, 0, 0, 0, 601, 602, 3, 122, 61, 0, 602, 603, 5, 63, 0, 0, 603, 604, 3, 62, 31, 0, 604, 605, 5, 61, 0, 0, 605, 125, 1, 0, 0, 0, 606, 608, 3, 24, 12, 0, 607, 606, 1, 0, 0, 0, 608, 611, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 609, 607, 1, 0, 0, 0, 610, 612, 1, 0, 0, 0, 611, 609, 1, 0, 0, 0, 612, 613, 5, 80, 0, 0, 613, 614, 3, 66, 33, 0, 614, 615, 3, 52, 26, 0, 615, 616, 5, 61, 0, 0, 616, 127, 1, 0, 0, 0, 617, 621, 3, 124, 62, 0, 618, 621, 3, 126, 63, 0, 619, 621, 5, 97, 0, 0, 620, 617, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 619, 1, 0, 0, 0, 621, 129, 1, 0, 0, 0, 622, 624, 3, 128, 64, 0, 623, 622, 1, 0, 0, 0, 624, 627, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 131, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 629, 5, 79, 0, 0, 629, 630, 3, 52, 26, 0, 630, 631, 5, 66, 0, 0, 631, 632, 3, 130, 65, 0, 632, 633, 5, 67, 0, 0, 633, 133, 1, 0, 0, 0, 634, 640, 3, 100, 50, 0, 635, 640, 3, 102, 51, 0, 636, 640, 3, 36, 18, 0, 637, 640, 3, 132, 66, 0, 638, 640, 5, 97, 0, 0, 639, 634, 1, 0, 0, 0, 639, 635, 1, 0, 0, 0, 639, 636, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 638, 1, 0, 0, 0, 640, 135, 1, 0, 0, 0, 641, 643, 3, 134, 67, 0, 642, 641, 1, 0, 0, 0, 643, 646, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 137, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 647, 649, 3, 24, 12, 0, 648, 647, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 653, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 653, 654, 5, 78, 0, 0, 654, 656, 3, 52, 26, 0, 655, 657, 3, 72, 36, 0, 656, 655, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 5, 66, 0, 0, 659, 660, 3, 136, 68, 0, 660, 661, 5, 67, 0, 0, 661, 139, 1, 0, 0, 0, 662, 666, 3, 102, 51, 0, 663, 666, 5, 97, 0, 0, 664, 666, 3, 44, 22, 0, 665, 662, 1, 0, 0, 0, 665, 663, 1, 0, 0, 0, 665, 664, 1, 0, 0, 0, 666, 141, 1, 0, 0, 0, 667, 669, 3, 140, 70, 0, 668, 667, 1, 0, 0, 0, 669, 672, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 143, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 673, 675, 3, 24, 12, 0, 674, 673, 1, 0, 0, 0, 675, 678, 1, 0, 0, 0, 676, 677, 1, 0, 0, 0, 676, 674, 1, 0, 0, 0, 677, 679, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 679, 680, 5, 82, 0, 0, 680, 682, 3, 52, 26, 0, 681, 683, 3, 72, 36, 0, 682, 681, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 5, 66, 0, 0, 685, 686, 3, 142, 71, 0, 686, 687, 5, 67, 0, 0, 687, 145, 1, 0, 0, 0, 688, 691, 3, 102, 51, 0, 689, 691, 5, 97, 0, 0, 690, 688, 1, 0, 0, 0, 690, 689, 1, 0, 0, 0, 691, 147, 1, 0, 0, 0, 692, 694, 3, 146, 73, 0, 693, 692, 1, 0, 0, 0, 694, 697, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 149, 1, 0, 0, 0, 697, 695, 1, 0, 0, 0, 698, 700, 3, 24, 12, 0, 699, 698, 1, 0, 0, 0, 700, 703, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 704, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 704, 705, 5, 81, 0, 0, 705, 707, 3, 52, 26, 0, 706, 708, 3, 72, 36, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 5, 66, 0, 0, 710, 711, 3, 148, 74, 0, 711, 712, 5, 67, 0, 0, 712, 151, 1, 0, 0, 0, 713, 715, 3, 24, 12, 0, 714, 713, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 717, 719, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 719, 720, 3, 66, 33, 0, 720, 721, 3, 52, 26, 0, 721, 722, 5, 61, 0, 0, 722, 153, 1, 0, 0, 0, 723, 726, 3, 152, 76, 0, 724, 726, 5, 97, 0, 0, 725, 723, 1, 0, 0, 0, 725, 724, 1, 0, 0, 0, 726, 155, 1, 0, 0, 0, 727, 729, 3, 154, 77, 0, 728, 727, 1, 0, 0, 0, 729, 732, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 157, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 733, 735, 3, 24, 12, 0, 734, 733, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 739, 1, 0, 0, 0, 738, 736, 1, 0, 0, 0, 739, 740, 5, 84, 0, 0, 740, 742, 3, 52, 26, 0, 741, 743, 3, 72, 36, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 745, 5, 66, 0, 0, 745, 746, 3, 156, 78, 0, 746, 747, 5, 67, 0, 0, 747, 159, 1, 0, 0, 0, 748, 750, 3, 24, 12, 0, 749, 748, 1, 0, 0, 0, 750, 753, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 754, 755, 5, 83, 0, 0, 755, 757, 3, 52, 26, 0, 756, 758, 3, 72, 36, 0, 757, 756, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 760, 5, 66, 0, 0, 760, 761, 3, 156, 78, 0, 761, 762, 5, 67, 0, 0, 762, 161, 1, 0, 0, 0, 763, 765, 3, 24, 12, 0, 764, 763, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 769, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 770, 3, 52, 26, 0, 770, 771, 5, 61, 0, 0, 771, 774, 1, 0, 0, 0, 772, 774, 5, 97, 0, 0, 773, 766, 1, 0, 0, 0, 773, 772, 1, 0, 0, 0, 774, 163, 1, 0, 0, 0, 775, 777, 3, 162, 81, 0, 776, 775, 1, 0, 0, 0, 777, 780, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 165, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 781, 782, 5, 85, 0, 0, 782, 783, 3, 52, 26, 0, 783, 784, 5, 66, 0, 0, 784, 785, 3, 164, 82, 0, 785, 786, 5, 67, 0, 0, 786, 167, 1, 0, 0, 0, 787, 790, 3, 52, 26, 0, 788, 789, 5, 63, 0, 0, 789, 791, 3, 62, 31, 0, 790, 788, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 793, 5, 61, 0, 0, 793, 169, 1, 0, 0, 0, 794, 797, 3, 168, 84, 0, 795, 797, 5, 97, 0, 0, 796, 794, 1, 0, 0, 0, 796, 795, 1, 0, 0, 0, 797, 171, 1, 0, 0, 0, 798, 800, 3, 170, 85, 0, 799, 798, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 173, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 804, 805, 5, 91, 0, 0, 805, 806, 3, 52, 26, 0, 806, 807, 5, 66, 0, 0, 807, 808, 3, 172, 86, 0, 808, 809, 5, 67, 0, 0, 809, 175, 1, 0, 0, 0, 810, 811, 7, 3, 0, 0, 811, 177, 1, 0, 0, 0, 812, 813, 7, 4, 0, 0, 813, 179, 1, 0, 0, 0, 814, 815, 7, 5, 0, 0, 815, 181, 1, 0, 0, 0, 76, 197, 199, 212, 219, 223, 228, 235, 256, 264, 273, 280, 286, 290, 307, 314, 321, 332, 345, 360, 364, 367, 382, 388, 400, 406, 420, 426, 431, 437, 446, 451, 457, 463, 480, 485, 502, 515, 527, 532, 538, 544, 557, 562, 568, 574, 582, 587, 593, 609, 620, 625, 639, 644, 650, 656, 665, 670, 676, 682, 690, 695, 701, 707, 716, 725, 730, 736, 742, 751, 757, 766, 773, 778, 790, 796, 801] \ No newline at end of file diff --git a/sources/SIGParser/.antlr/SIGBaseListener.h b/sources/SIGParser/.antlr/SIGBaseListener.h index ab6e03afe..7e60c53b8 100644 --- a/sources/SIGParser/.antlr/SIGBaseListener.h +++ b/sources/SIGParser/.antlr/SIGBaseListener.h @@ -121,8 +121,8 @@ class SIGBaseListener : public SIGListener { virtual void enterInsert_block(SIGParser::Insert_blockContext * /*ctx*/) override { } virtual void exitInsert_block(SIGParser::Insert_blockContext * /*ctx*/) override { } - virtual void enterPath_id(SIGParser::Path_idContext * /*ctx*/) override { } - virtual void exitPath_id(SIGParser::Path_idContext * /*ctx*/) override { } + virtual void enterShader_path(SIGParser::Shader_pathContext * /*ctx*/) override { } + virtual void exitShader_path(SIGParser::Shader_pathContext * /*ctx*/) override { } virtual void enterInherit(SIGParser::InheritContext * /*ctx*/) override { } virtual void exitInherit(SIGParser::InheritContext * /*ctx*/) override { } diff --git a/sources/SIGParser/.antlr/SIGBaseVisitor.h b/sources/SIGParser/.antlr/SIGBaseVisitor.h index 8ed7fbbb0..de3b9c401 100644 --- a/sources/SIGParser/.antlr/SIGBaseVisitor.h +++ b/sources/SIGParser/.antlr/SIGBaseVisitor.h @@ -155,7 +155,7 @@ class SIGBaseVisitor : public SIGVisitor { return visitChildren(ctx); } - virtual std::any visitPath_id(SIGParser::Path_idContext *ctx) override { + virtual std::any visitShader_path(SIGParser::Shader_pathContext *ctx) override { return visitChildren(ctx); } diff --git a/sources/SIGParser/.antlr/SIGListener.h b/sources/SIGParser/.antlr/SIGListener.h index f48191075..e79f8ecb5 100644 --- a/sources/SIGParser/.antlr/SIGListener.h +++ b/sources/SIGParser/.antlr/SIGListener.h @@ -119,8 +119,8 @@ class SIGListener : public antlr4::tree::ParseTreeListener { virtual void enterInsert_block(SIGParser::Insert_blockContext *ctx) = 0; virtual void exitInsert_block(SIGParser::Insert_blockContext *ctx) = 0; - virtual void enterPath_id(SIGParser::Path_idContext *ctx) = 0; - virtual void exitPath_id(SIGParser::Path_idContext *ctx) = 0; + virtual void enterShader_path(SIGParser::Shader_pathContext *ctx) = 0; + virtual void exitShader_path(SIGParser::Shader_pathContext *ctx) = 0; virtual void enterInherit(SIGParser::InheritContext *ctx) = 0; virtual void exitInherit(SIGParser::InheritContext *ctx) = 0; diff --git a/sources/SIGParser/.antlr/SIGParser.cpp b/sources/SIGParser/.antlr/SIGParser.cpp index 5b5a8546a..5b2d9a687 100644 --- a/sources/SIGParser/.antlr/SIGParser.cpp +++ b/sources/SIGParser/.antlr/SIGParser.cpp @@ -51,7 +51,7 @@ void sigParserInitialize() { "rtv_formats_declaration", "blends_declaration", "pointer", "pso_param", "class_no_template", "type_with_template", "inherit_id", "name_id", "option_id", "owner_id", "template_id", "function_id", "value_id", - "value_id_ignore", "type_id", "insert_block", "path_id", "inherit", + "value_id_ignore", "type_id", "insert_block", "shader_path", "inherit", "layout_stat", "layout_block", "layout_definition", "table_stat", "table_block", "table_definition", "rt_color_declaration", "rt_ds_declaration", "rt_stat", "rt_block", "rt_definition", "array_value_holder", "array_value_ids", @@ -100,7 +100,7 @@ void sigParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,102,824,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 4,1,102,817,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7, 14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7, 21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7, @@ -130,252 +130,250 @@ void sigParserInitialize() { 8,24,1,24,3,24,368,8,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29, 1,29,1,30,1,30,1,30,3,30,383,8,30,1,30,1,30,5,30,387,8,30,10,30,12,30, 390,9,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,401,8,31,1, - 32,1,32,1,32,1,32,3,32,407,8,32,1,33,1,33,1,34,1,34,1,35,1,35,5,35,415, - 8,35,10,35,12,35,418,9,35,1,35,1,35,1,36,1,36,1,36,1,36,5,36,426,8,36, - 10,36,12,36,429,9,36,1,37,1,37,1,37,3,37,434,8,37,1,38,5,38,437,8,38, - 10,38,12,38,440,9,38,1,39,1,39,1,39,3,39,445,8,39,1,39,1,39,1,39,1,39, - 1,40,1,40,1,40,3,40,454,8,40,1,41,5,41,457,8,41,10,41,12,41,460,9,41, - 1,42,5,42,463,8,42,10,42,12,42,466,9,42,1,42,1,42,1,42,3,42,471,8,42, - 1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45, - 1,45,3,45,488,8,45,1,46,5,46,491,8,46,10,46,12,46,494,9,46,1,47,1,47, - 1,47,1,47,1,47,1,47,1,48,1,48,1,49,1,49,1,49,1,49,5,49,508,8,49,10,49, - 12,49,511,9,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,5,51,521,8,51, - 10,51,12,51,524,9,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,3,52, - 535,8,52,1,53,5,53,538,8,53,10,53,12,53,541,9,53,1,54,5,54,544,8,54,10, - 54,12,54,547,9,54,1,54,1,54,1,54,3,54,552,8,54,1,54,1,54,1,54,1,54,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,565,8,55,1,56,5,56,568,8,56,10, - 56,12,56,571,9,56,1,57,5,57,574,8,57,10,57,12,57,577,9,57,1,57,1,57,1, - 57,3,57,582,8,57,1,57,1,57,1,57,1,57,1,58,1,58,3,58,590,8,58,1,59,5,59, - 593,8,59,10,59,12,59,596,9,59,1,60,1,60,1,60,3,60,601,8,60,1,60,1,60, - 1,60,1,60,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,63,5,63,615,8,63,10,63, - 12,63,618,9,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,3,64,628,8,64, - 1,65,5,65,631,8,65,10,65,12,65,634,9,65,1,66,1,66,1,66,1,66,1,66,1,66, - 1,67,1,67,1,67,1,67,1,67,3,67,647,8,67,1,68,5,68,650,8,68,10,68,12,68, - 653,9,68,1,69,5,69,656,8,69,10,69,12,69,659,9,69,1,69,1,69,1,69,3,69, - 664,8,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,3,70,673,8,70,1,71,5,71,676, - 8,71,10,71,12,71,679,9,71,1,72,5,72,682,8,72,10,72,12,72,685,9,72,1,72, - 1,72,1,72,3,72,690,8,72,1,72,1,72,1,72,1,72,1,73,1,73,3,73,698,8,73,1, - 74,5,74,701,8,74,10,74,12,74,704,9,74,1,75,5,75,707,8,75,10,75,12,75, - 710,9,75,1,75,1,75,1,75,3,75,715,8,75,1,75,1,75,1,75,1,75,1,76,5,76,722, - 8,76,10,76,12,76,725,9,76,1,76,1,76,1,76,1,76,1,77,1,77,3,77,733,8,77, - 1,78,5,78,736,8,78,10,78,12,78,739,9,78,1,79,5,79,742,8,79,10,79,12,79, - 745,9,79,1,79,1,79,1,79,3,79,750,8,79,1,79,1,79,1,79,1,79,1,80,5,80,757, - 8,80,10,80,12,80,760,9,80,1,80,1,80,1,80,3,80,765,8,80,1,80,1,80,1,80, - 1,80,1,81,5,81,772,8,81,10,81,12,81,775,9,81,1,81,1,81,1,81,1,81,3,81, - 781,8,81,1,82,5,82,784,8,82,10,82,12,82,787,9,82,1,83,1,83,1,83,1,83, - 1,83,1,83,1,84,1,84,1,84,3,84,798,8,84,1,84,1,84,1,85,1,85,3,85,804,8, - 85,1,86,5,86,807,8,86,10,86,12,86,810,9,86,1,87,1,87,1,87,1,87,1,87,1, - 87,1,88,1,88,1,89,1,89,1,90,1,90,1,90,18,280,307,321,332,345,416,427, - 464,522,545,575,616,657,683,708,723,743,758,0,91,0,2,4,6,8,10,12,14,16, - 18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62, - 64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106, - 108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142, - 144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178, - 180,0,5,4,0,46,47,49,54,60,60,64,65,1,0,9,13,1,0,14,26,1,0,27,45,1,0, - 70,71,848,0,199,1,0,0,0,2,204,1,0,0,0,4,223,1,0,0,0,6,226,1,0,0,0,8,235, - 1,0,0,0,10,237,1,0,0,0,12,241,1,0,0,0,14,245,1,0,0,0,16,247,1,0,0,0,18, - 249,1,0,0,0,20,251,1,0,0,0,22,254,1,0,0,0,24,258,1,0,0,0,26,269,1,0,0, - 0,28,271,1,0,0,0,30,280,1,0,0,0,32,294,1,0,0,0,34,298,1,0,0,0,36,307, - 1,0,0,0,38,321,1,0,0,0,40,332,1,0,0,0,42,340,1,0,0,0,44,345,1,0,0,0,46, - 353,1,0,0,0,48,355,1,0,0,0,50,369,1,0,0,0,52,371,1,0,0,0,54,373,1,0,0, - 0,56,375,1,0,0,0,58,377,1,0,0,0,60,379,1,0,0,0,62,400,1,0,0,0,64,406, - 1,0,0,0,66,408,1,0,0,0,68,410,1,0,0,0,70,416,1,0,0,0,72,421,1,0,0,0,74, - 433,1,0,0,0,76,438,1,0,0,0,78,441,1,0,0,0,80,453,1,0,0,0,82,458,1,0,0, - 0,84,464,1,0,0,0,86,476,1,0,0,0,88,480,1,0,0,0,90,487,1,0,0,0,92,492, - 1,0,0,0,94,495,1,0,0,0,96,501,1,0,0,0,98,503,1,0,0,0,100,514,1,0,0,0, - 102,522,1,0,0,0,104,534,1,0,0,0,106,539,1,0,0,0,108,545,1,0,0,0,110,564, - 1,0,0,0,112,569,1,0,0,0,114,575,1,0,0,0,116,589,1,0,0,0,118,594,1,0,0, - 0,120,597,1,0,0,0,122,606,1,0,0,0,124,608,1,0,0,0,126,616,1,0,0,0,128, - 627,1,0,0,0,130,632,1,0,0,0,132,635,1,0,0,0,134,646,1,0,0,0,136,651,1, - 0,0,0,138,657,1,0,0,0,140,672,1,0,0,0,142,677,1,0,0,0,144,683,1,0,0,0, - 146,697,1,0,0,0,148,702,1,0,0,0,150,708,1,0,0,0,152,723,1,0,0,0,154,732, - 1,0,0,0,156,737,1,0,0,0,158,743,1,0,0,0,160,758,1,0,0,0,162,780,1,0,0, - 0,164,785,1,0,0,0,166,788,1,0,0,0,168,794,1,0,0,0,170,803,1,0,0,0,172, - 808,1,0,0,0,174,811,1,0,0,0,176,817,1,0,0,0,178,819,1,0,0,0,180,821,1, - 0,0,0,182,198,3,78,39,0,183,198,3,84,42,0,184,198,3,94,47,0,185,198,3, - 138,69,0,186,198,3,108,54,0,187,198,3,114,57,0,188,198,3,120,60,0,189, - 198,3,144,72,0,190,198,3,150,75,0,191,198,3,160,80,0,192,198,3,158,79, - 0,193,198,3,166,83,0,194,198,3,174,87,0,195,198,3,2,1,0,196,198,5,97, - 0,0,197,182,1,0,0,0,197,183,1,0,0,0,197,184,1,0,0,0,197,185,1,0,0,0,197, - 186,1,0,0,0,197,187,1,0,0,0,197,188,1,0,0,0,197,189,1,0,0,0,197,190,1, - 0,0,0,197,191,1,0,0,0,197,192,1,0,0,0,197,193,1,0,0,0,197,194,1,0,0,0, - 197,195,1,0,0,0,197,196,1,0,0,0,198,201,1,0,0,0,199,197,1,0,0,0,199,200, - 1,0,0,0,200,202,1,0,0,0,201,199,1,0,0,0,202,203,5,0,0,1,203,1,1,0,0,0, - 204,205,5,1,0,0,205,206,3,52,26,0,206,207,3,20,10,0,207,208,5,61,0,0, - 208,3,1,0,0,0,209,210,3,56,28,0,210,211,5,2,0,0,211,213,1,0,0,0,212,209, - 1,0,0,0,212,213,1,0,0,0,213,214,1,0,0,0,214,217,3,16,8,0,215,216,5,48, - 0,0,216,218,3,16,8,0,217,215,1,0,0,0,218,219,1,0,0,0,219,217,1,0,0,0, - 219,220,1,0,0,0,220,224,1,0,0,0,221,224,3,18,9,0,222,224,3,6,3,0,223, - 212,1,0,0,0,223,221,1,0,0,0,223,222,1,0,0,0,224,5,1,0,0,0,225,227,3,8, - 4,0,226,225,1,0,0,0,227,228,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229, - 7,1,0,0,0,230,236,3,10,5,0,231,236,3,60,30,0,232,236,3,12,6,0,233,236, - 3,62,31,0,234,236,3,14,7,0,235,230,1,0,0,0,235,231,1,0,0,0,235,232,1, - 0,0,0,235,233,1,0,0,0,235,234,1,0,0,0,236,9,1,0,0,0,237,238,3,56,28,0, - 238,239,5,2,0,0,239,240,3,62,31,0,240,11,1,0,0,0,241,242,3,52,26,0,242, - 243,5,62,0,0,243,244,3,52,26,0,244,13,1,0,0,0,245,246,7,0,0,0,246,15, - 1,0,0,0,247,248,3,62,31,0,248,17,1,0,0,0,249,250,5,96,0,0,250,19,1,0, - 0,0,251,252,5,63,0,0,252,253,3,4,2,0,253,21,1,0,0,0,254,256,3,52,26,0, - 255,257,3,20,10,0,256,255,1,0,0,0,256,257,1,0,0,0,257,23,1,0,0,0,258, - 259,5,68,0,0,259,264,3,22,11,0,260,261,5,3,0,0,261,263,3,22,11,0,262, - 260,1,0,0,0,263,266,1,0,0,0,264,262,1,0,0,0,264,265,1,0,0,0,265,267,1, - 0,0,0,266,264,1,0,0,0,267,268,5,69,0,0,268,25,1,0,0,0,269,270,5,93,0, - 0,270,27,1,0,0,0,271,273,5,68,0,0,272,274,3,26,13,0,273,272,1,0,0,0,273, - 274,1,0,0,0,274,275,1,0,0,0,275,276,5,69,0,0,276,29,1,0,0,0,277,279,3, - 24,12,0,278,277,1,0,0,0,279,282,1,0,0,0,280,281,1,0,0,0,280,278,1,0,0, - 0,281,283,1,0,0,0,282,280,1,0,0,0,283,284,3,66,33,0,284,286,3,52,26,0, - 285,287,3,28,14,0,286,285,1,0,0,0,286,287,1,0,0,0,287,290,1,0,0,0,288, - 289,5,63,0,0,289,291,3,62,31,0,290,288,1,0,0,0,290,291,1,0,0,0,291,292, - 1,0,0,0,292,293,5,61,0,0,293,31,1,0,0,0,294,295,5,86,0,0,295,296,3,52, - 26,0,296,297,5,61,0,0,297,33,1,0,0,0,298,299,5,4,0,0,299,300,3,52,26, - 0,300,301,5,63,0,0,301,302,3,62,31,0,302,303,5,61,0,0,303,35,1,0,0,0, - 304,306,3,24,12,0,305,304,1,0,0,0,306,309,1,0,0,0,307,308,1,0,0,0,307, - 305,1,0,0,0,308,310,1,0,0,0,309,307,1,0,0,0,310,311,5,5,0,0,311,314,3, - 52,26,0,312,313,5,63,0,0,313,315,3,98,49,0,314,312,1,0,0,0,314,315,1, - 0,0,0,315,316,1,0,0,0,316,317,5,61,0,0,317,37,1,0,0,0,318,320,3,24,12, - 0,319,318,1,0,0,0,320,323,1,0,0,0,321,322,1,0,0,0,321,319,1,0,0,0,322, - 324,1,0,0,0,323,321,1,0,0,0,324,325,5,6,0,0,325,326,5,63,0,0,326,327, - 3,98,49,0,327,328,5,61,0,0,328,39,1,0,0,0,329,331,3,24,12,0,330,329,1, - 0,0,0,331,334,1,0,0,0,332,333,1,0,0,0,332,330,1,0,0,0,333,335,1,0,0,0, - 334,332,1,0,0,0,335,336,5,7,0,0,336,337,5,63,0,0,337,338,3,98,49,0,338, - 339,5,61,0,0,339,41,1,0,0,0,340,341,5,99,0,0,341,43,1,0,0,0,342,344,3, - 24,12,0,343,342,1,0,0,0,344,347,1,0,0,0,345,346,1,0,0,0,345,343,1,0,0, - 0,346,348,1,0,0,0,347,345,1,0,0,0,348,349,3,178,89,0,349,350,5,63,0,0, - 350,351,3,62,31,0,351,352,5,61,0,0,352,45,1,0,0,0,353,354,5,92,0,0,354, - 47,1,0,0,0,355,364,3,46,23,0,356,360,5,52,0,0,357,359,3,58,29,0,358,357, - 1,0,0,0,359,362,1,0,0,0,360,358,1,0,0,0,360,361,1,0,0,0,361,363,1,0,0, - 0,362,360,1,0,0,0,363,365,5,51,0,0,364,356,1,0,0,0,364,365,1,0,0,0,365, - 367,1,0,0,0,366,368,3,42,21,0,367,366,1,0,0,0,367,368,1,0,0,0,368,49, - 1,0,0,0,369,370,5,92,0,0,370,51,1,0,0,0,371,372,5,92,0,0,372,53,1,0,0, - 0,373,374,5,92,0,0,374,55,1,0,0,0,375,376,5,92,0,0,376,57,1,0,0,0,377, - 378,5,92,0,0,378,59,1,0,0,0,379,380,5,92,0,0,380,382,5,64,0,0,381,383, - 3,64,32,0,382,381,1,0,0,0,382,383,1,0,0,0,383,388,1,0,0,0,384,385,5,3, - 0,0,385,387,3,64,32,0,386,384,1,0,0,0,387,390,1,0,0,0,388,386,1,0,0,0, - 388,389,1,0,0,0,389,391,1,0,0,0,390,388,1,0,0,0,391,392,5,65,0,0,392, - 61,1,0,0,0,393,401,3,176,88,0,394,401,5,92,0,0,395,401,5,93,0,0,396,401, - 5,94,0,0,397,401,3,180,90,0,398,401,3,60,30,0,399,401,3,98,49,0,400,393, - 1,0,0,0,400,394,1,0,0,0,400,395,1,0,0,0,400,396,1,0,0,0,400,397,1,0,0, - 0,400,398,1,0,0,0,400,399,1,0,0,0,401,63,1,0,0,0,402,407,5,92,0,0,403, - 407,5,93,0,0,404,407,5,94,0,0,405,407,3,180,90,0,406,402,1,0,0,0,406, - 403,1,0,0,0,406,404,1,0,0,0,406,405,1,0,0,0,407,65,1,0,0,0,408,409,3, - 48,24,0,409,67,1,0,0,0,410,411,5,102,0,0,411,69,1,0,0,0,412,413,5,92, - 0,0,413,415,5,57,0,0,414,412,1,0,0,0,415,418,1,0,0,0,416,417,1,0,0,0, - 416,414,1,0,0,0,417,419,1,0,0,0,418,416,1,0,0,0,419,420,5,92,0,0,420, - 71,1,0,0,0,421,422,5,8,0,0,422,427,3,50,25,0,423,424,5,3,0,0,424,426, - 3,50,25,0,425,423,1,0,0,0,426,429,1,0,0,0,427,428,1,0,0,0,427,425,1,0, - 0,0,428,73,1,0,0,0,429,427,1,0,0,0,430,434,3,32,16,0,431,434,3,34,17, - 0,432,434,5,97,0,0,433,430,1,0,0,0,433,431,1,0,0,0,433,432,1,0,0,0,434, - 75,1,0,0,0,435,437,3,74,37,0,436,435,1,0,0,0,437,440,1,0,0,0,438,436, - 1,0,0,0,438,439,1,0,0,0,439,77,1,0,0,0,440,438,1,0,0,0,441,442,5,73,0, - 0,442,444,3,52,26,0,443,445,3,72,36,0,444,443,1,0,0,0,444,445,1,0,0,0, - 445,446,1,0,0,0,446,447,5,66,0,0,447,448,3,76,38,0,448,449,5,67,0,0,449, - 79,1,0,0,0,450,454,3,30,15,0,451,454,3,68,34,0,452,454,5,97,0,0,453,450, - 1,0,0,0,453,451,1,0,0,0,453,452,1,0,0,0,454,81,1,0,0,0,455,457,3,80,40, - 0,456,455,1,0,0,0,457,460,1,0,0,0,458,456,1,0,0,0,458,459,1,0,0,0,459, - 83,1,0,0,0,460,458,1,0,0,0,461,463,3,24,12,0,462,461,1,0,0,0,463,466, - 1,0,0,0,464,465,1,0,0,0,464,462,1,0,0,0,465,467,1,0,0,0,466,464,1,0,0, - 0,467,468,5,74,0,0,468,470,3,52,26,0,469,471,3,72,36,0,470,469,1,0,0, - 0,470,471,1,0,0,0,471,472,1,0,0,0,472,473,5,66,0,0,473,474,3,82,41,0, - 474,475,5,67,0,0,475,85,1,0,0,0,476,477,3,66,33,0,477,478,3,52,26,0,478, - 479,5,61,0,0,479,87,1,0,0,0,480,481,5,89,0,0,481,482,3,52,26,0,482,483, - 5,61,0,0,483,89,1,0,0,0,484,488,3,86,43,0,485,488,3,88,44,0,486,488,5, - 97,0,0,487,484,1,0,0,0,487,485,1,0,0,0,487,486,1,0,0,0,488,91,1,0,0,0, - 489,491,3,90,45,0,490,489,1,0,0,0,491,494,1,0,0,0,492,490,1,0,0,0,492, - 493,1,0,0,0,493,93,1,0,0,0,494,492,1,0,0,0,495,496,5,87,0,0,496,497,3, - 52,26,0,497,498,5,66,0,0,498,499,3,92,46,0,499,500,5,67,0,0,500,95,1, - 0,0,0,501,502,3,62,31,0,502,97,1,0,0,0,503,504,5,66,0,0,504,509,3,96, - 48,0,505,506,5,3,0,0,506,508,3,96,48,0,507,505,1,0,0,0,508,511,1,0,0, - 0,509,507,1,0,0,0,509,510,1,0,0,0,510,512,1,0,0,0,511,509,1,0,0,0,512, - 513,5,67,0,0,513,99,1,0,0,0,514,515,5,90,0,0,515,516,5,63,0,0,516,517, - 3,52,26,0,517,518,5,61,0,0,518,101,1,0,0,0,519,521,3,24,12,0,520,519, - 1,0,0,0,521,524,1,0,0,0,522,523,1,0,0,0,522,520,1,0,0,0,523,525,1,0,0, - 0,524,522,1,0,0,0,525,526,3,176,88,0,526,527,5,63,0,0,527,528,3,70,35, - 0,528,529,5,61,0,0,529,103,1,0,0,0,530,535,3,100,50,0,531,535,3,102,51, - 0,532,535,3,36,18,0,533,535,5,97,0,0,534,530,1,0,0,0,534,531,1,0,0,0, - 534,532,1,0,0,0,534,533,1,0,0,0,535,105,1,0,0,0,536,538,3,104,52,0,537, - 536,1,0,0,0,538,541,1,0,0,0,539,537,1,0,0,0,539,540,1,0,0,0,540,107,1, - 0,0,0,541,539,1,0,0,0,542,544,3,24,12,0,543,542,1,0,0,0,544,547,1,0,0, - 0,545,546,1,0,0,0,545,543,1,0,0,0,546,548,1,0,0,0,547,545,1,0,0,0,548, - 549,5,75,0,0,549,551,3,52,26,0,550,552,3,72,36,0,551,550,1,0,0,0,551, - 552,1,0,0,0,552,553,1,0,0,0,553,554,5,66,0,0,554,555,3,106,53,0,555,556, - 5,67,0,0,556,109,1,0,0,0,557,565,3,100,50,0,558,565,3,102,51,0,559,565, - 3,36,18,0,560,565,3,38,19,0,561,565,3,40,20,0,562,565,3,44,22,0,563,565, - 5,97,0,0,564,557,1,0,0,0,564,558,1,0,0,0,564,559,1,0,0,0,564,560,1,0, - 0,0,564,561,1,0,0,0,564,562,1,0,0,0,564,563,1,0,0,0,565,111,1,0,0,0,566, - 568,3,110,55,0,567,566,1,0,0,0,568,571,1,0,0,0,569,567,1,0,0,0,569,570, - 1,0,0,0,570,113,1,0,0,0,571,569,1,0,0,0,572,574,3,24,12,0,573,572,1,0, - 0,0,574,577,1,0,0,0,575,576,1,0,0,0,575,573,1,0,0,0,576,578,1,0,0,0,577, - 575,1,0,0,0,578,579,5,76,0,0,579,581,3,52,26,0,580,582,3,72,36,0,581, - 580,1,0,0,0,581,582,1,0,0,0,582,583,1,0,0,0,583,584,5,66,0,0,584,585, - 3,112,56,0,585,586,5,67,0,0,586,115,1,0,0,0,587,590,3,100,50,0,588,590, - 5,97,0,0,589,587,1,0,0,0,589,588,1,0,0,0,590,117,1,0,0,0,591,593,3,116, - 58,0,592,591,1,0,0,0,593,596,1,0,0,0,594,592,1,0,0,0,594,595,1,0,0,0, - 595,119,1,0,0,0,596,594,1,0,0,0,597,598,5,77,0,0,598,600,3,52,26,0,599, - 601,3,72,36,0,600,599,1,0,0,0,600,601,1,0,0,0,601,602,1,0,0,0,602,603, - 5,66,0,0,603,604,3,118,59,0,604,605,5,67,0,0,605,121,1,0,0,0,606,607, - 7,1,0,0,607,123,1,0,0,0,608,609,3,122,61,0,609,610,5,63,0,0,610,611,3, - 62,31,0,611,612,5,61,0,0,612,125,1,0,0,0,613,615,3,24,12,0,614,613,1, - 0,0,0,615,618,1,0,0,0,616,617,1,0,0,0,616,614,1,0,0,0,617,619,1,0,0,0, - 618,616,1,0,0,0,619,620,5,80,0,0,620,621,3,66,33,0,621,622,3,52,26,0, - 622,623,5,61,0,0,623,127,1,0,0,0,624,628,3,124,62,0,625,628,3,126,63, - 0,626,628,5,97,0,0,627,624,1,0,0,0,627,625,1,0,0,0,627,626,1,0,0,0,628, - 129,1,0,0,0,629,631,3,128,64,0,630,629,1,0,0,0,631,634,1,0,0,0,632,630, - 1,0,0,0,632,633,1,0,0,0,633,131,1,0,0,0,634,632,1,0,0,0,635,636,5,79, - 0,0,636,637,3,52,26,0,637,638,5,66,0,0,638,639,3,130,65,0,639,640,5,67, - 0,0,640,133,1,0,0,0,641,647,3,100,50,0,642,647,3,102,51,0,643,647,3,36, - 18,0,644,647,3,132,66,0,645,647,5,97,0,0,646,641,1,0,0,0,646,642,1,0, - 0,0,646,643,1,0,0,0,646,644,1,0,0,0,646,645,1,0,0,0,647,135,1,0,0,0,648, - 650,3,134,67,0,649,648,1,0,0,0,650,653,1,0,0,0,651,649,1,0,0,0,651,652, - 1,0,0,0,652,137,1,0,0,0,653,651,1,0,0,0,654,656,3,24,12,0,655,654,1,0, - 0,0,656,659,1,0,0,0,657,658,1,0,0,0,657,655,1,0,0,0,658,660,1,0,0,0,659, - 657,1,0,0,0,660,661,5,78,0,0,661,663,3,52,26,0,662,664,3,72,36,0,663, - 662,1,0,0,0,663,664,1,0,0,0,664,665,1,0,0,0,665,666,5,66,0,0,666,667, - 3,136,68,0,667,668,5,67,0,0,668,139,1,0,0,0,669,673,3,102,51,0,670,673, - 5,97,0,0,671,673,3,44,22,0,672,669,1,0,0,0,672,670,1,0,0,0,672,671,1, - 0,0,0,673,141,1,0,0,0,674,676,3,140,70,0,675,674,1,0,0,0,676,679,1,0, - 0,0,677,675,1,0,0,0,677,678,1,0,0,0,678,143,1,0,0,0,679,677,1,0,0,0,680, - 682,3,24,12,0,681,680,1,0,0,0,682,685,1,0,0,0,683,684,1,0,0,0,683,681, - 1,0,0,0,684,686,1,0,0,0,685,683,1,0,0,0,686,687,5,82,0,0,687,689,3,52, - 26,0,688,690,3,72,36,0,689,688,1,0,0,0,689,690,1,0,0,0,690,691,1,0,0, - 0,691,692,5,66,0,0,692,693,3,142,71,0,693,694,5,67,0,0,694,145,1,0,0, - 0,695,698,3,102,51,0,696,698,5,97,0,0,697,695,1,0,0,0,697,696,1,0,0,0, - 698,147,1,0,0,0,699,701,3,146,73,0,700,699,1,0,0,0,701,704,1,0,0,0,702, - 700,1,0,0,0,702,703,1,0,0,0,703,149,1,0,0,0,704,702,1,0,0,0,705,707,3, - 24,12,0,706,705,1,0,0,0,707,710,1,0,0,0,708,709,1,0,0,0,708,706,1,0,0, - 0,709,711,1,0,0,0,710,708,1,0,0,0,711,712,5,81,0,0,712,714,3,52,26,0, - 713,715,3,72,36,0,714,713,1,0,0,0,714,715,1,0,0,0,715,716,1,0,0,0,716, - 717,5,66,0,0,717,718,3,148,74,0,718,719,5,67,0,0,719,151,1,0,0,0,720, - 722,3,24,12,0,721,720,1,0,0,0,722,725,1,0,0,0,723,724,1,0,0,0,723,721, - 1,0,0,0,724,726,1,0,0,0,725,723,1,0,0,0,726,727,3,66,33,0,727,728,3,52, - 26,0,728,729,5,61,0,0,729,153,1,0,0,0,730,733,3,152,76,0,731,733,5,97, - 0,0,732,730,1,0,0,0,732,731,1,0,0,0,733,155,1,0,0,0,734,736,3,154,77, - 0,735,734,1,0,0,0,736,739,1,0,0,0,737,735,1,0,0,0,737,738,1,0,0,0,738, - 157,1,0,0,0,739,737,1,0,0,0,740,742,3,24,12,0,741,740,1,0,0,0,742,745, - 1,0,0,0,743,744,1,0,0,0,743,741,1,0,0,0,744,746,1,0,0,0,745,743,1,0,0, - 0,746,747,5,84,0,0,747,749,3,52,26,0,748,750,3,72,36,0,749,748,1,0,0, - 0,749,750,1,0,0,0,750,751,1,0,0,0,751,752,5,66,0,0,752,753,3,156,78,0, - 753,754,5,67,0,0,754,159,1,0,0,0,755,757,3,24,12,0,756,755,1,0,0,0,757, - 760,1,0,0,0,758,759,1,0,0,0,758,756,1,0,0,0,759,761,1,0,0,0,760,758,1, - 0,0,0,761,762,5,83,0,0,762,764,3,52,26,0,763,765,3,72,36,0,764,763,1, - 0,0,0,764,765,1,0,0,0,765,766,1,0,0,0,766,767,5,66,0,0,767,768,3,156, - 78,0,768,769,5,67,0,0,769,161,1,0,0,0,770,772,3,24,12,0,771,770,1,0,0, - 0,772,775,1,0,0,0,773,771,1,0,0,0,773,774,1,0,0,0,774,776,1,0,0,0,775, - 773,1,0,0,0,776,777,3,52,26,0,777,778,5,61,0,0,778,781,1,0,0,0,779,781, - 5,97,0,0,780,773,1,0,0,0,780,779,1,0,0,0,781,163,1,0,0,0,782,784,3,162, - 81,0,783,782,1,0,0,0,784,787,1,0,0,0,785,783,1,0,0,0,785,786,1,0,0,0, - 786,165,1,0,0,0,787,785,1,0,0,0,788,789,5,85,0,0,789,790,3,52,26,0,790, - 791,5,66,0,0,791,792,3,164,82,0,792,793,5,67,0,0,793,167,1,0,0,0,794, - 797,3,52,26,0,795,796,5,63,0,0,796,798,3,62,31,0,797,795,1,0,0,0,797, - 798,1,0,0,0,798,799,1,0,0,0,799,800,5,61,0,0,800,169,1,0,0,0,801,804, - 3,168,84,0,802,804,5,97,0,0,803,801,1,0,0,0,803,802,1,0,0,0,804,171,1, - 0,0,0,805,807,3,170,85,0,806,805,1,0,0,0,807,810,1,0,0,0,808,806,1,0, - 0,0,808,809,1,0,0,0,809,173,1,0,0,0,810,808,1,0,0,0,811,812,5,91,0,0, - 812,813,3,52,26,0,813,814,5,66,0,0,814,815,3,172,86,0,815,816,5,67,0, - 0,816,175,1,0,0,0,817,818,7,2,0,0,818,177,1,0,0,0,819,820,7,3,0,0,820, - 179,1,0,0,0,821,822,7,4,0,0,822,181,1,0,0,0,77,197,199,212,219,223,228, - 235,256,264,273,280,286,290,307,314,321,332,345,360,364,367,382,388,400, - 406,416,427,433,438,444,453,458,464,470,487,492,509,522,534,539,545,551, - 564,569,575,581,589,594,600,616,627,632,646,651,657,663,672,677,683,689, - 697,702,708,714,723,732,737,743,749,758,764,773,780,785,797,803,808 + 32,1,32,1,32,1,32,3,32,407,8,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1, + 36,1,36,1,36,5,36,419,8,36,10,36,12,36,422,9,36,1,37,1,37,1,37,3,37,427, + 8,37,1,38,5,38,430,8,38,10,38,12,38,433,9,38,1,39,1,39,1,39,3,39,438, + 8,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,3,40,447,8,40,1,41,5,41,450,8, + 41,10,41,12,41,453,9,41,1,42,5,42,456,8,42,10,42,12,42,459,9,42,1,42, + 1,42,1,42,3,42,464,8,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,44, + 1,44,1,44,1,44,1,45,1,45,1,45,3,45,481,8,45,1,46,5,46,484,8,46,10,46, + 12,46,487,9,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,49,1,49,1,49, + 1,49,5,49,501,8,49,10,49,12,49,504,9,49,1,49,1,49,1,50,1,50,1,50,1,50, + 1,50,1,51,5,51,514,8,51,10,51,12,51,517,9,51,1,51,1,51,1,51,1,51,1,51, + 1,52,1,52,1,52,1,52,3,52,528,8,52,1,53,5,53,531,8,53,10,53,12,53,534, + 9,53,1,54,5,54,537,8,54,10,54,12,54,540,9,54,1,54,1,54,1,54,3,54,545, + 8,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,558, + 8,55,1,56,5,56,561,8,56,10,56,12,56,564,9,56,1,57,5,57,567,8,57,10,57, + 12,57,570,9,57,1,57,1,57,1,57,3,57,575,8,57,1,57,1,57,1,57,1,57,1,58, + 1,58,3,58,583,8,58,1,59,5,59,586,8,59,10,59,12,59,589,9,59,1,60,1,60, + 1,60,3,60,594,8,60,1,60,1,60,1,60,1,60,1,61,1,61,1,62,1,62,1,62,1,62, + 1,62,1,63,5,63,608,8,63,10,63,12,63,611,9,63,1,63,1,63,1,63,1,63,1,63, + 1,64,1,64,1,64,3,64,621,8,64,1,65,5,65,624,8,65,10,65,12,65,627,9,65, + 1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,3,67,640,8,67, + 1,68,5,68,643,8,68,10,68,12,68,646,9,68,1,69,5,69,649,8,69,10,69,12,69, + 652,9,69,1,69,1,69,1,69,3,69,657,8,69,1,69,1,69,1,69,1,69,1,70,1,70,1, + 70,3,70,666,8,70,1,71,5,71,669,8,71,10,71,12,71,672,9,71,1,72,5,72,675, + 8,72,10,72,12,72,678,9,72,1,72,1,72,1,72,3,72,683,8,72,1,72,1,72,1,72, + 1,72,1,73,1,73,3,73,691,8,73,1,74,5,74,694,8,74,10,74,12,74,697,9,74, + 1,75,5,75,700,8,75,10,75,12,75,703,9,75,1,75,1,75,1,75,3,75,708,8,75, + 1,75,1,75,1,75,1,75,1,76,5,76,715,8,76,10,76,12,76,718,9,76,1,76,1,76, + 1,76,1,76,1,77,1,77,3,77,726,8,77,1,78,5,78,729,8,78,10,78,12,78,732, + 9,78,1,79,5,79,735,8,79,10,79,12,79,738,9,79,1,79,1,79,1,79,3,79,743, + 8,79,1,79,1,79,1,79,1,79,1,80,5,80,750,8,80,10,80,12,80,753,9,80,1,80, + 1,80,1,80,3,80,758,8,80,1,80,1,80,1,80,1,80,1,81,5,81,765,8,81,10,81, + 12,81,768,9,81,1,81,1,81,1,81,1,81,3,81,774,8,81,1,82,5,82,777,8,82,10, + 82,12,82,780,9,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,3,84,791, + 8,84,1,84,1,84,1,85,1,85,3,85,797,8,85,1,86,5,86,800,8,86,10,86,12,86, + 803,9,86,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90, + 1,90,17,280,307,321,332,345,420,457,515,538,568,609,650,676,701,716,736, + 751,0,91,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, + 44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88, + 90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, + 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162, + 164,166,168,170,172,174,176,178,180,0,6,4,0,46,47,49,54,60,60,64,65,2, + 0,92,92,95,95,1,0,9,13,1,0,14,26,1,0,27,45,1,0,70,71,840,0,199,1,0,0, + 0,2,204,1,0,0,0,4,223,1,0,0,0,6,226,1,0,0,0,8,235,1,0,0,0,10,237,1,0, + 0,0,12,241,1,0,0,0,14,245,1,0,0,0,16,247,1,0,0,0,18,249,1,0,0,0,20,251, + 1,0,0,0,22,254,1,0,0,0,24,258,1,0,0,0,26,269,1,0,0,0,28,271,1,0,0,0,30, + 280,1,0,0,0,32,294,1,0,0,0,34,298,1,0,0,0,36,307,1,0,0,0,38,321,1,0,0, + 0,40,332,1,0,0,0,42,340,1,0,0,0,44,345,1,0,0,0,46,353,1,0,0,0,48,355, + 1,0,0,0,50,369,1,0,0,0,52,371,1,0,0,0,54,373,1,0,0,0,56,375,1,0,0,0,58, + 377,1,0,0,0,60,379,1,0,0,0,62,400,1,0,0,0,64,406,1,0,0,0,66,408,1,0,0, + 0,68,410,1,0,0,0,70,412,1,0,0,0,72,414,1,0,0,0,74,426,1,0,0,0,76,431, + 1,0,0,0,78,434,1,0,0,0,80,446,1,0,0,0,82,451,1,0,0,0,84,457,1,0,0,0,86, + 469,1,0,0,0,88,473,1,0,0,0,90,480,1,0,0,0,92,485,1,0,0,0,94,488,1,0,0, + 0,96,494,1,0,0,0,98,496,1,0,0,0,100,507,1,0,0,0,102,515,1,0,0,0,104,527, + 1,0,0,0,106,532,1,0,0,0,108,538,1,0,0,0,110,557,1,0,0,0,112,562,1,0,0, + 0,114,568,1,0,0,0,116,582,1,0,0,0,118,587,1,0,0,0,120,590,1,0,0,0,122, + 599,1,0,0,0,124,601,1,0,0,0,126,609,1,0,0,0,128,620,1,0,0,0,130,625,1, + 0,0,0,132,628,1,0,0,0,134,639,1,0,0,0,136,644,1,0,0,0,138,650,1,0,0,0, + 140,665,1,0,0,0,142,670,1,0,0,0,144,676,1,0,0,0,146,690,1,0,0,0,148,695, + 1,0,0,0,150,701,1,0,0,0,152,716,1,0,0,0,154,725,1,0,0,0,156,730,1,0,0, + 0,158,736,1,0,0,0,160,751,1,0,0,0,162,773,1,0,0,0,164,778,1,0,0,0,166, + 781,1,0,0,0,168,787,1,0,0,0,170,796,1,0,0,0,172,801,1,0,0,0,174,804,1, + 0,0,0,176,810,1,0,0,0,178,812,1,0,0,0,180,814,1,0,0,0,182,198,3,78,39, + 0,183,198,3,84,42,0,184,198,3,94,47,0,185,198,3,138,69,0,186,198,3,108, + 54,0,187,198,3,114,57,0,188,198,3,120,60,0,189,198,3,144,72,0,190,198, + 3,150,75,0,191,198,3,160,80,0,192,198,3,158,79,0,193,198,3,166,83,0,194, + 198,3,174,87,0,195,198,3,2,1,0,196,198,5,97,0,0,197,182,1,0,0,0,197,183, + 1,0,0,0,197,184,1,0,0,0,197,185,1,0,0,0,197,186,1,0,0,0,197,187,1,0,0, + 0,197,188,1,0,0,0,197,189,1,0,0,0,197,190,1,0,0,0,197,191,1,0,0,0,197, + 192,1,0,0,0,197,193,1,0,0,0,197,194,1,0,0,0,197,195,1,0,0,0,197,196,1, + 0,0,0,198,201,1,0,0,0,199,197,1,0,0,0,199,200,1,0,0,0,200,202,1,0,0,0, + 201,199,1,0,0,0,202,203,5,0,0,1,203,1,1,0,0,0,204,205,5,1,0,0,205,206, + 3,52,26,0,206,207,3,20,10,0,207,208,5,61,0,0,208,3,1,0,0,0,209,210,3, + 56,28,0,210,211,5,2,0,0,211,213,1,0,0,0,212,209,1,0,0,0,212,213,1,0,0, + 0,213,214,1,0,0,0,214,217,3,16,8,0,215,216,5,48,0,0,216,218,3,16,8,0, + 217,215,1,0,0,0,218,219,1,0,0,0,219,217,1,0,0,0,219,220,1,0,0,0,220,224, + 1,0,0,0,221,224,3,18,9,0,222,224,3,6,3,0,223,212,1,0,0,0,223,221,1,0, + 0,0,223,222,1,0,0,0,224,5,1,0,0,0,225,227,3,8,4,0,226,225,1,0,0,0,227, + 228,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,7,1,0,0,0,230,236,3,10, + 5,0,231,236,3,60,30,0,232,236,3,12,6,0,233,236,3,62,31,0,234,236,3,14, + 7,0,235,230,1,0,0,0,235,231,1,0,0,0,235,232,1,0,0,0,235,233,1,0,0,0,235, + 234,1,0,0,0,236,9,1,0,0,0,237,238,3,56,28,0,238,239,5,2,0,0,239,240,3, + 62,31,0,240,11,1,0,0,0,241,242,3,52,26,0,242,243,5,62,0,0,243,244,3,52, + 26,0,244,13,1,0,0,0,245,246,7,0,0,0,246,15,1,0,0,0,247,248,3,62,31,0, + 248,17,1,0,0,0,249,250,5,96,0,0,250,19,1,0,0,0,251,252,5,63,0,0,252,253, + 3,4,2,0,253,21,1,0,0,0,254,256,3,52,26,0,255,257,3,20,10,0,256,255,1, + 0,0,0,256,257,1,0,0,0,257,23,1,0,0,0,258,259,5,68,0,0,259,264,3,22,11, + 0,260,261,5,3,0,0,261,263,3,22,11,0,262,260,1,0,0,0,263,266,1,0,0,0,264, + 262,1,0,0,0,264,265,1,0,0,0,265,267,1,0,0,0,266,264,1,0,0,0,267,268,5, + 69,0,0,268,25,1,0,0,0,269,270,5,93,0,0,270,27,1,0,0,0,271,273,5,68,0, + 0,272,274,3,26,13,0,273,272,1,0,0,0,273,274,1,0,0,0,274,275,1,0,0,0,275, + 276,5,69,0,0,276,29,1,0,0,0,277,279,3,24,12,0,278,277,1,0,0,0,279,282, + 1,0,0,0,280,281,1,0,0,0,280,278,1,0,0,0,281,283,1,0,0,0,282,280,1,0,0, + 0,283,284,3,66,33,0,284,286,3,52,26,0,285,287,3,28,14,0,286,285,1,0,0, + 0,286,287,1,0,0,0,287,290,1,0,0,0,288,289,5,63,0,0,289,291,3,62,31,0, + 290,288,1,0,0,0,290,291,1,0,0,0,291,292,1,0,0,0,292,293,5,61,0,0,293, + 31,1,0,0,0,294,295,5,86,0,0,295,296,3,52,26,0,296,297,5,61,0,0,297,33, + 1,0,0,0,298,299,5,4,0,0,299,300,3,52,26,0,300,301,5,63,0,0,301,302,3, + 62,31,0,302,303,5,61,0,0,303,35,1,0,0,0,304,306,3,24,12,0,305,304,1,0, + 0,0,306,309,1,0,0,0,307,308,1,0,0,0,307,305,1,0,0,0,308,310,1,0,0,0,309, + 307,1,0,0,0,310,311,5,5,0,0,311,314,3,52,26,0,312,313,5,63,0,0,313,315, + 3,98,49,0,314,312,1,0,0,0,314,315,1,0,0,0,315,316,1,0,0,0,316,317,5,61, + 0,0,317,37,1,0,0,0,318,320,3,24,12,0,319,318,1,0,0,0,320,323,1,0,0,0, + 321,322,1,0,0,0,321,319,1,0,0,0,322,324,1,0,0,0,323,321,1,0,0,0,324,325, + 5,6,0,0,325,326,5,63,0,0,326,327,3,98,49,0,327,328,5,61,0,0,328,39,1, + 0,0,0,329,331,3,24,12,0,330,329,1,0,0,0,331,334,1,0,0,0,332,333,1,0,0, + 0,332,330,1,0,0,0,333,335,1,0,0,0,334,332,1,0,0,0,335,336,5,7,0,0,336, + 337,5,63,0,0,337,338,3,98,49,0,338,339,5,61,0,0,339,41,1,0,0,0,340,341, + 5,99,0,0,341,43,1,0,0,0,342,344,3,24,12,0,343,342,1,0,0,0,344,347,1,0, + 0,0,345,346,1,0,0,0,345,343,1,0,0,0,346,348,1,0,0,0,347,345,1,0,0,0,348, + 349,3,178,89,0,349,350,5,63,0,0,350,351,3,62,31,0,351,352,5,61,0,0,352, + 45,1,0,0,0,353,354,5,92,0,0,354,47,1,0,0,0,355,364,3,46,23,0,356,360, + 5,52,0,0,357,359,3,58,29,0,358,357,1,0,0,0,359,362,1,0,0,0,360,358,1, + 0,0,0,360,361,1,0,0,0,361,363,1,0,0,0,362,360,1,0,0,0,363,365,5,51,0, + 0,364,356,1,0,0,0,364,365,1,0,0,0,365,367,1,0,0,0,366,368,3,42,21,0,367, + 366,1,0,0,0,367,368,1,0,0,0,368,49,1,0,0,0,369,370,5,92,0,0,370,51,1, + 0,0,0,371,372,5,92,0,0,372,53,1,0,0,0,373,374,5,92,0,0,374,55,1,0,0,0, + 375,376,5,92,0,0,376,57,1,0,0,0,377,378,5,92,0,0,378,59,1,0,0,0,379,380, + 5,92,0,0,380,382,5,64,0,0,381,383,3,64,32,0,382,381,1,0,0,0,382,383,1, + 0,0,0,383,388,1,0,0,0,384,385,5,3,0,0,385,387,3,64,32,0,386,384,1,0,0, + 0,387,390,1,0,0,0,388,386,1,0,0,0,388,389,1,0,0,0,389,391,1,0,0,0,390, + 388,1,0,0,0,391,392,5,65,0,0,392,61,1,0,0,0,393,401,3,176,88,0,394,401, + 5,92,0,0,395,401,5,93,0,0,396,401,5,94,0,0,397,401,3,180,90,0,398,401, + 3,60,30,0,399,401,3,98,49,0,400,393,1,0,0,0,400,394,1,0,0,0,400,395,1, + 0,0,0,400,396,1,0,0,0,400,397,1,0,0,0,400,398,1,0,0,0,400,399,1,0,0,0, + 401,63,1,0,0,0,402,407,5,92,0,0,403,407,5,93,0,0,404,407,5,94,0,0,405, + 407,3,180,90,0,406,402,1,0,0,0,406,403,1,0,0,0,406,404,1,0,0,0,406,405, + 1,0,0,0,407,65,1,0,0,0,408,409,3,48,24,0,409,67,1,0,0,0,410,411,5,102, + 0,0,411,69,1,0,0,0,412,413,7,1,0,0,413,71,1,0,0,0,414,415,5,8,0,0,415, + 420,3,50,25,0,416,417,5,3,0,0,417,419,3,50,25,0,418,416,1,0,0,0,419,422, + 1,0,0,0,420,421,1,0,0,0,420,418,1,0,0,0,421,73,1,0,0,0,422,420,1,0,0, + 0,423,427,3,32,16,0,424,427,3,34,17,0,425,427,5,97,0,0,426,423,1,0,0, + 0,426,424,1,0,0,0,426,425,1,0,0,0,427,75,1,0,0,0,428,430,3,74,37,0,429, + 428,1,0,0,0,430,433,1,0,0,0,431,429,1,0,0,0,431,432,1,0,0,0,432,77,1, + 0,0,0,433,431,1,0,0,0,434,435,5,73,0,0,435,437,3,52,26,0,436,438,3,72, + 36,0,437,436,1,0,0,0,437,438,1,0,0,0,438,439,1,0,0,0,439,440,5,66,0,0, + 440,441,3,76,38,0,441,442,5,67,0,0,442,79,1,0,0,0,443,447,3,30,15,0,444, + 447,3,68,34,0,445,447,5,97,0,0,446,443,1,0,0,0,446,444,1,0,0,0,446,445, + 1,0,0,0,447,81,1,0,0,0,448,450,3,80,40,0,449,448,1,0,0,0,450,453,1,0, + 0,0,451,449,1,0,0,0,451,452,1,0,0,0,452,83,1,0,0,0,453,451,1,0,0,0,454, + 456,3,24,12,0,455,454,1,0,0,0,456,459,1,0,0,0,457,458,1,0,0,0,457,455, + 1,0,0,0,458,460,1,0,0,0,459,457,1,0,0,0,460,461,5,74,0,0,461,463,3,52, + 26,0,462,464,3,72,36,0,463,462,1,0,0,0,463,464,1,0,0,0,464,465,1,0,0, + 0,465,466,5,66,0,0,466,467,3,82,41,0,467,468,5,67,0,0,468,85,1,0,0,0, + 469,470,3,66,33,0,470,471,3,52,26,0,471,472,5,61,0,0,472,87,1,0,0,0,473, + 474,5,89,0,0,474,475,3,52,26,0,475,476,5,61,0,0,476,89,1,0,0,0,477,481, + 3,86,43,0,478,481,3,88,44,0,479,481,5,97,0,0,480,477,1,0,0,0,480,478, + 1,0,0,0,480,479,1,0,0,0,481,91,1,0,0,0,482,484,3,90,45,0,483,482,1,0, + 0,0,484,487,1,0,0,0,485,483,1,0,0,0,485,486,1,0,0,0,486,93,1,0,0,0,487, + 485,1,0,0,0,488,489,5,87,0,0,489,490,3,52,26,0,490,491,5,66,0,0,491,492, + 3,92,46,0,492,493,5,67,0,0,493,95,1,0,0,0,494,495,3,62,31,0,495,97,1, + 0,0,0,496,497,5,66,0,0,497,502,3,96,48,0,498,499,5,3,0,0,499,501,3,96, + 48,0,500,498,1,0,0,0,501,504,1,0,0,0,502,500,1,0,0,0,502,503,1,0,0,0, + 503,505,1,0,0,0,504,502,1,0,0,0,505,506,5,67,0,0,506,99,1,0,0,0,507,508, + 5,90,0,0,508,509,5,63,0,0,509,510,3,52,26,0,510,511,5,61,0,0,511,101, + 1,0,0,0,512,514,3,24,12,0,513,512,1,0,0,0,514,517,1,0,0,0,515,516,1,0, + 0,0,515,513,1,0,0,0,516,518,1,0,0,0,517,515,1,0,0,0,518,519,3,176,88, + 0,519,520,5,63,0,0,520,521,3,70,35,0,521,522,5,61,0,0,522,103,1,0,0,0, + 523,528,3,100,50,0,524,528,3,102,51,0,525,528,3,36,18,0,526,528,5,97, + 0,0,527,523,1,0,0,0,527,524,1,0,0,0,527,525,1,0,0,0,527,526,1,0,0,0,528, + 105,1,0,0,0,529,531,3,104,52,0,530,529,1,0,0,0,531,534,1,0,0,0,532,530, + 1,0,0,0,532,533,1,0,0,0,533,107,1,0,0,0,534,532,1,0,0,0,535,537,3,24, + 12,0,536,535,1,0,0,0,537,540,1,0,0,0,538,539,1,0,0,0,538,536,1,0,0,0, + 539,541,1,0,0,0,540,538,1,0,0,0,541,542,5,75,0,0,542,544,3,52,26,0,543, + 545,3,72,36,0,544,543,1,0,0,0,544,545,1,0,0,0,545,546,1,0,0,0,546,547, + 5,66,0,0,547,548,3,106,53,0,548,549,5,67,0,0,549,109,1,0,0,0,550,558, + 3,100,50,0,551,558,3,102,51,0,552,558,3,36,18,0,553,558,3,38,19,0,554, + 558,3,40,20,0,555,558,3,44,22,0,556,558,5,97,0,0,557,550,1,0,0,0,557, + 551,1,0,0,0,557,552,1,0,0,0,557,553,1,0,0,0,557,554,1,0,0,0,557,555,1, + 0,0,0,557,556,1,0,0,0,558,111,1,0,0,0,559,561,3,110,55,0,560,559,1,0, + 0,0,561,564,1,0,0,0,562,560,1,0,0,0,562,563,1,0,0,0,563,113,1,0,0,0,564, + 562,1,0,0,0,565,567,3,24,12,0,566,565,1,0,0,0,567,570,1,0,0,0,568,569, + 1,0,0,0,568,566,1,0,0,0,569,571,1,0,0,0,570,568,1,0,0,0,571,572,5,76, + 0,0,572,574,3,52,26,0,573,575,3,72,36,0,574,573,1,0,0,0,574,575,1,0,0, + 0,575,576,1,0,0,0,576,577,5,66,0,0,577,578,3,112,56,0,578,579,5,67,0, + 0,579,115,1,0,0,0,580,583,3,100,50,0,581,583,5,97,0,0,582,580,1,0,0,0, + 582,581,1,0,0,0,583,117,1,0,0,0,584,586,3,116,58,0,585,584,1,0,0,0,586, + 589,1,0,0,0,587,585,1,0,0,0,587,588,1,0,0,0,588,119,1,0,0,0,589,587,1, + 0,0,0,590,591,5,77,0,0,591,593,3,52,26,0,592,594,3,72,36,0,593,592,1, + 0,0,0,593,594,1,0,0,0,594,595,1,0,0,0,595,596,5,66,0,0,596,597,3,118, + 59,0,597,598,5,67,0,0,598,121,1,0,0,0,599,600,7,2,0,0,600,123,1,0,0,0, + 601,602,3,122,61,0,602,603,5,63,0,0,603,604,3,62,31,0,604,605,5,61,0, + 0,605,125,1,0,0,0,606,608,3,24,12,0,607,606,1,0,0,0,608,611,1,0,0,0,609, + 610,1,0,0,0,609,607,1,0,0,0,610,612,1,0,0,0,611,609,1,0,0,0,612,613,5, + 80,0,0,613,614,3,66,33,0,614,615,3,52,26,0,615,616,5,61,0,0,616,127,1, + 0,0,0,617,621,3,124,62,0,618,621,3,126,63,0,619,621,5,97,0,0,620,617, + 1,0,0,0,620,618,1,0,0,0,620,619,1,0,0,0,621,129,1,0,0,0,622,624,3,128, + 64,0,623,622,1,0,0,0,624,627,1,0,0,0,625,623,1,0,0,0,625,626,1,0,0,0, + 626,131,1,0,0,0,627,625,1,0,0,0,628,629,5,79,0,0,629,630,3,52,26,0,630, + 631,5,66,0,0,631,632,3,130,65,0,632,633,5,67,0,0,633,133,1,0,0,0,634, + 640,3,100,50,0,635,640,3,102,51,0,636,640,3,36,18,0,637,640,3,132,66, + 0,638,640,5,97,0,0,639,634,1,0,0,0,639,635,1,0,0,0,639,636,1,0,0,0,639, + 637,1,0,0,0,639,638,1,0,0,0,640,135,1,0,0,0,641,643,3,134,67,0,642,641, + 1,0,0,0,643,646,1,0,0,0,644,642,1,0,0,0,644,645,1,0,0,0,645,137,1,0,0, + 0,646,644,1,0,0,0,647,649,3,24,12,0,648,647,1,0,0,0,649,652,1,0,0,0,650, + 651,1,0,0,0,650,648,1,0,0,0,651,653,1,0,0,0,652,650,1,0,0,0,653,654,5, + 78,0,0,654,656,3,52,26,0,655,657,3,72,36,0,656,655,1,0,0,0,656,657,1, + 0,0,0,657,658,1,0,0,0,658,659,5,66,0,0,659,660,3,136,68,0,660,661,5,67, + 0,0,661,139,1,0,0,0,662,666,3,102,51,0,663,666,5,97,0,0,664,666,3,44, + 22,0,665,662,1,0,0,0,665,663,1,0,0,0,665,664,1,0,0,0,666,141,1,0,0,0, + 667,669,3,140,70,0,668,667,1,0,0,0,669,672,1,0,0,0,670,668,1,0,0,0,670, + 671,1,0,0,0,671,143,1,0,0,0,672,670,1,0,0,0,673,675,3,24,12,0,674,673, + 1,0,0,0,675,678,1,0,0,0,676,677,1,0,0,0,676,674,1,0,0,0,677,679,1,0,0, + 0,678,676,1,0,0,0,679,680,5,82,0,0,680,682,3,52,26,0,681,683,3,72,36, + 0,682,681,1,0,0,0,682,683,1,0,0,0,683,684,1,0,0,0,684,685,5,66,0,0,685, + 686,3,142,71,0,686,687,5,67,0,0,687,145,1,0,0,0,688,691,3,102,51,0,689, + 691,5,97,0,0,690,688,1,0,0,0,690,689,1,0,0,0,691,147,1,0,0,0,692,694, + 3,146,73,0,693,692,1,0,0,0,694,697,1,0,0,0,695,693,1,0,0,0,695,696,1, + 0,0,0,696,149,1,0,0,0,697,695,1,0,0,0,698,700,3,24,12,0,699,698,1,0,0, + 0,700,703,1,0,0,0,701,702,1,0,0,0,701,699,1,0,0,0,702,704,1,0,0,0,703, + 701,1,0,0,0,704,705,5,81,0,0,705,707,3,52,26,0,706,708,3,72,36,0,707, + 706,1,0,0,0,707,708,1,0,0,0,708,709,1,0,0,0,709,710,5,66,0,0,710,711, + 3,148,74,0,711,712,5,67,0,0,712,151,1,0,0,0,713,715,3,24,12,0,714,713, + 1,0,0,0,715,718,1,0,0,0,716,717,1,0,0,0,716,714,1,0,0,0,717,719,1,0,0, + 0,718,716,1,0,0,0,719,720,3,66,33,0,720,721,3,52,26,0,721,722,5,61,0, + 0,722,153,1,0,0,0,723,726,3,152,76,0,724,726,5,97,0,0,725,723,1,0,0,0, + 725,724,1,0,0,0,726,155,1,0,0,0,727,729,3,154,77,0,728,727,1,0,0,0,729, + 732,1,0,0,0,730,728,1,0,0,0,730,731,1,0,0,0,731,157,1,0,0,0,732,730,1, + 0,0,0,733,735,3,24,12,0,734,733,1,0,0,0,735,738,1,0,0,0,736,737,1,0,0, + 0,736,734,1,0,0,0,737,739,1,0,0,0,738,736,1,0,0,0,739,740,5,84,0,0,740, + 742,3,52,26,0,741,743,3,72,36,0,742,741,1,0,0,0,742,743,1,0,0,0,743,744, + 1,0,0,0,744,745,5,66,0,0,745,746,3,156,78,0,746,747,5,67,0,0,747,159, + 1,0,0,0,748,750,3,24,12,0,749,748,1,0,0,0,750,753,1,0,0,0,751,752,1,0, + 0,0,751,749,1,0,0,0,752,754,1,0,0,0,753,751,1,0,0,0,754,755,5,83,0,0, + 755,757,3,52,26,0,756,758,3,72,36,0,757,756,1,0,0,0,757,758,1,0,0,0,758, + 759,1,0,0,0,759,760,5,66,0,0,760,761,3,156,78,0,761,762,5,67,0,0,762, + 161,1,0,0,0,763,765,3,24,12,0,764,763,1,0,0,0,765,768,1,0,0,0,766,764, + 1,0,0,0,766,767,1,0,0,0,767,769,1,0,0,0,768,766,1,0,0,0,769,770,3,52, + 26,0,770,771,5,61,0,0,771,774,1,0,0,0,772,774,5,97,0,0,773,766,1,0,0, + 0,773,772,1,0,0,0,774,163,1,0,0,0,775,777,3,162,81,0,776,775,1,0,0,0, + 777,780,1,0,0,0,778,776,1,0,0,0,778,779,1,0,0,0,779,165,1,0,0,0,780,778, + 1,0,0,0,781,782,5,85,0,0,782,783,3,52,26,0,783,784,5,66,0,0,784,785,3, + 164,82,0,785,786,5,67,0,0,786,167,1,0,0,0,787,790,3,52,26,0,788,789,5, + 63,0,0,789,791,3,62,31,0,790,788,1,0,0,0,790,791,1,0,0,0,791,792,1,0, + 0,0,792,793,5,61,0,0,793,169,1,0,0,0,794,797,3,168,84,0,795,797,5,97, + 0,0,796,794,1,0,0,0,796,795,1,0,0,0,797,171,1,0,0,0,798,800,3,170,85, + 0,799,798,1,0,0,0,800,803,1,0,0,0,801,799,1,0,0,0,801,802,1,0,0,0,802, + 173,1,0,0,0,803,801,1,0,0,0,804,805,5,91,0,0,805,806,3,52,26,0,806,807, + 5,66,0,0,807,808,3,172,86,0,808,809,5,67,0,0,809,175,1,0,0,0,810,811, + 7,3,0,0,811,177,1,0,0,0,812,813,7,4,0,0,813,179,1,0,0,0,814,815,7,5,0, + 0,815,181,1,0,0,0,76,197,199,212,219,223,228,235,256,264,273,280,286, + 290,307,314,321,332,345,360,364,367,382,388,400,406,420,426,431,437,446, + 451,457,463,480,485,502,515,527,532,538,544,557,562,568,574,582,587,593, + 609,620,625,639,644,650,656,665,670,676,682,690,695,701,707,716,725,730, + 736,742,751,757,766,773,778,790,796,801 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -3544,56 +3542,49 @@ SIGParser::Insert_blockContext* SIGParser::insert_block() { return _localctx; } -//----------------- Path_idContext ------------------------------------------------------------------ +//----------------- Shader_pathContext ------------------------------------------------------------------ -SIGParser::Path_idContext::Path_idContext(ParserRuleContext *parent, size_t invokingState) +SIGParser::Shader_pathContext::Shader_pathContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Path_idContext::ID() { - return getTokens(SIGParser::ID); +tree::TerminalNode* SIGParser::Shader_pathContext::STRING() { + return getToken(SIGParser::STRING, 0); } -tree::TerminalNode* SIGParser::Path_idContext::ID(size_t i) { - return getToken(SIGParser::ID, i); -} - -std::vector SIGParser::Path_idContext::DIV() { - return getTokens(SIGParser::DIV); -} - -tree::TerminalNode* SIGParser::Path_idContext::DIV(size_t i) { - return getToken(SIGParser::DIV, i); +tree::TerminalNode* SIGParser::Shader_pathContext::ID() { + return getToken(SIGParser::ID, 0); } -size_t SIGParser::Path_idContext::getRuleIndex() const { - return SIGParser::RulePath_id; +size_t SIGParser::Shader_pathContext::getRuleIndex() const { + return SIGParser::RuleShader_path; } -void SIGParser::Path_idContext::enterRule(tree::ParseTreeListener *listener) { +void SIGParser::Shader_pathContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) - parserListener->enterPath_id(this); + parserListener->enterShader_path(this); } -void SIGParser::Path_idContext::exitRule(tree::ParseTreeListener *listener) { +void SIGParser::Shader_pathContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) - parserListener->exitPath_id(this); + parserListener->exitShader_path(this); } -std::any SIGParser::Path_idContext::accept(tree::ParseTreeVisitor *visitor) { +std::any SIGParser::Shader_pathContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitPath_id(this); + return parserVisitor->visitShader_path(this); else return visitor->visitChildren(this); } -SIGParser::Path_idContext* SIGParser::path_id() { - Path_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, SIGParser::RulePath_id); +SIGParser::Shader_pathContext* SIGParser::shader_path() { + Shader_pathContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 70, SIGParser::RuleShader_path); + size_t _la = 0; #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3603,24 +3594,18 @@ SIGParser::Path_idContext* SIGParser::path_id() { exitRule(); }); try { - size_t alt; enterOuterAlt(_localctx, 1); - setState(416); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); - while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1 + 1) { - setState(412); - match(SIGParser::ID); - setState(413); - match(SIGParser::DIV); - } - setState(418); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); + setState(412); + _la = _input->LA(1); + if (!(_la == SIGParser::ID + + || _la == SIGParser::STRING)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); } - setState(419); - match(SIGParser::ID); } catch (RecognitionException &e) { @@ -3685,23 +3670,23 @@ SIGParser::InheritContext* SIGParser::inherit() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(421); + setState(414); match(SIGParser::T__7); - setState(422); + setState(415); inherit_id(); - setState(427); + setState(420); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 26, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(423); + setState(416); match(SIGParser::T__2); - setState(424); + setState(417); inherit_id(); } - setState(429); + setState(422); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 26, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); } } @@ -3769,26 +3754,26 @@ SIGParser::Layout_statContext* SIGParser::layout_stat() { exitRule(); }); try { - setState(433); + setState(426); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::SLOT: { enterOuterAlt(_localctx, 1); - setState(430); + setState(423); slot_declaration(); break; } case SIGParser::T__3: { enterOuterAlt(_localctx, 2); - setState(431); + setState(424); sampler_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(432); + setState(425); match(SIGParser::COMMENT); break; } @@ -3860,15 +3845,15 @@ SIGParser::Layout_blockContext* SIGParser::layout_block() { }); try { enterOuterAlt(_localctx, 1); - setState(438); + setState(431); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__3 || _la == SIGParser::SLOT || _la == SIGParser::COMMENT) { - setState(435); + setState(428); layout_stat(); - setState(440); + setState(433); _errHandler->sync(this); _la = _input->LA(1); } @@ -3952,23 +3937,23 @@ SIGParser::Layout_definitionContext* SIGParser::layout_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(441); + setState(434); match(SIGParser::LAYOUT); - setState(442); + setState(435); name_id(); - setState(444); + setState(437); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(443); + setState(436); inherit(); } - setState(446); + setState(439); match(SIGParser::OBRACE); - setState(447); + setState(440); layout_block(); - setState(448); + setState(441); match(SIGParser::CBRACE); } @@ -4036,27 +4021,27 @@ SIGParser::Table_statContext* SIGParser::table_stat() { exitRule(); }); try { - setState(453); + setState(446); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::OSBRACE: case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(450); + setState(443); value_declaration(); break; } case SIGParser::INSERT_BLOCK: { enterOuterAlt(_localctx, 2); - setState(451); + setState(444); insert_block(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(452); + setState(445); match(SIGParser::COMMENT); break; } @@ -4128,14 +4113,14 @@ SIGParser::Table_blockContext* SIGParser::table_block() { }); try { enterOuterAlt(_localctx, 1); - setState(458); + setState(451); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 17733517313) != 0) { - setState(455); + setState(448); table_stat(); - setState(460); + setState(453); _errHandler->sync(this); _la = _input->LA(1); } @@ -4228,35 +4213,35 @@ SIGParser::Table_definitionContext* SIGParser::table_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(464); + setState(457); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 32, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 31, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(461); + setState(454); option_block(); } - setState(466); + setState(459); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 32, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 31, _ctx); } - setState(467); + setState(460); match(SIGParser::STRUCT); - setState(468); + setState(461); name_id(); - setState(470); + setState(463); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(469); + setState(462); inherit(); } - setState(472); + setState(465); match(SIGParser::OBRACE); - setState(473); + setState(466); table_block(); - setState(474); + setState(467); match(SIGParser::CBRACE); } @@ -4325,11 +4310,11 @@ SIGParser::Rt_color_declarationContext* SIGParser::rt_color_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(476); + setState(469); type_id(); - setState(477); + setState(470); name_id(); - setState(478); + setState(471); match(SIGParser::SCOL); } @@ -4398,11 +4383,11 @@ SIGParser::Rt_ds_declarationContext* SIGParser::rt_ds_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(480); + setState(473); match(SIGParser::DSV); - setState(481); + setState(474); name_id(); - setState(482); + setState(475); match(SIGParser::SCOL); } @@ -4470,26 +4455,26 @@ SIGParser::Rt_statContext* SIGParser::rt_stat() { exitRule(); }); try { - setState(487); + setState(480); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(484); + setState(477); rt_color_declaration(); break; } case SIGParser::DSV: { enterOuterAlt(_localctx, 2); - setState(485); + setState(478); rt_ds_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(486); + setState(479); match(SIGParser::COMMENT); break; } @@ -4561,14 +4546,14 @@ SIGParser::Rt_blockContext* SIGParser::rt_block() { }); try { enterOuterAlt(_localctx, 1); - setState(492); + setState(485); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 89) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 89)) & 265) != 0) { - setState(489); + setState(482); rt_stat(); - setState(494); + setState(487); _errHandler->sync(this); _la = _input->LA(1); } @@ -4647,15 +4632,15 @@ SIGParser::Rt_definitionContext* SIGParser::rt_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(495); + setState(488); match(SIGParser::RT); - setState(496); + setState(489); name_id(); - setState(497); + setState(490); match(SIGParser::OBRACE); - setState(498); + setState(491); rt_block(); - setState(499); + setState(492); match(SIGParser::CBRACE); } @@ -4716,7 +4701,7 @@ SIGParser::Array_value_holderContext* SIGParser::array_value_holder() { }); try { enterOuterAlt(_localctx, 1); - setState(501); + setState(494); value_id(); } @@ -4790,23 +4775,23 @@ SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { }); try { enterOuterAlt(_localctx, 1); - setState(503); + setState(496); match(SIGParser::OBRACE); - setState(504); + setState(497); array_value_holder(); - setState(509); + setState(502); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__2) { - setState(505); + setState(498); match(SIGParser::T__2); - setState(506); + setState(499); array_value_holder(); - setState(511); + setState(504); _errHandler->sync(this); _la = _input->LA(1); } - setState(512); + setState(505); match(SIGParser::CBRACE); } @@ -4879,13 +4864,13 @@ SIGParser::Root_sigContext* SIGParser::root_sig() { }); try { enterOuterAlt(_localctx, 1); - setState(514); + setState(507); match(SIGParser::ROOTSIG); - setState(515); + setState(508); match(SIGParser::ASSIGN); - setState(516); + setState(509); name_id(); - setState(517); + setState(510); match(SIGParser::SCOL); } @@ -4912,8 +4897,8 @@ tree::TerminalNode* SIGParser::ShaderContext::ASSIGN() { return getToken(SIGParser::ASSIGN, 0); } -SIGParser::Path_idContext* SIGParser::ShaderContext::path_id() { - return getRuleContext(0); +SIGParser::Shader_pathContext* SIGParser::ShaderContext::shader_path() { + return getRuleContext(0); } tree::TerminalNode* SIGParser::ShaderContext::SCOL() { @@ -4967,25 +4952,25 @@ SIGParser::ShaderContext* SIGParser::shader() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(522); + setState(515); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 37, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 36, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(519); + setState(512); option_block(); } - setState(524); + setState(517); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 37, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 36, _ctx); } - setState(525); + setState(518); shader_type(); - setState(526); + setState(519); match(SIGParser::ASSIGN); - setState(527); - path_id(); - setState(528); + setState(520); + shader_path(); + setState(521); match(SIGParser::SCOL); } @@ -5057,33 +5042,33 @@ SIGParser::Compute_pso_statContext* SIGParser::compute_pso_stat() { exitRule(); }); try { - setState(534); + setState(527); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 38, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 37, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(530); + setState(523); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(531); + setState(524); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(532); + setState(525); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(533); + setState(526); match(SIGParser::COMMENT); break; } @@ -5155,15 +5140,15 @@ SIGParser::Compute_pso_blockContext* SIGParser::compute_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(539); + setState(532); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 134201376) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541065217) != 0) { - setState(536); + setState(529); compute_pso_stat(); - setState(541); + setState(534); _errHandler->sync(this); _la = _input->LA(1); } @@ -5256,35 +5241,35 @@ SIGParser::Compute_pso_definitionContext* SIGParser::compute_pso_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(545); + setState(538); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 40, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 39, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(542); + setState(535); option_block(); } - setState(547); + setState(540); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 40, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 39, _ctx); } - setState(548); + setState(541); match(SIGParser::COMPUTE_PSO); - setState(549); + setState(542); name_id(); - setState(551); + setState(544); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(550); + setState(543); inherit(); } - setState(553); + setState(546); match(SIGParser::OBRACE); - setState(554); + setState(547); compute_pso_block(); - setState(555); + setState(548); match(SIGParser::CBRACE); } @@ -5368,54 +5353,54 @@ SIGParser::Graphics_pso_statContext* SIGParser::graphics_pso_stat() { exitRule(); }); try { - setState(564); + setState(557); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 42, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(557); + setState(550); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(558); + setState(551); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(559); + setState(552); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(560); + setState(553); rtv_formats_declaration(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(561); + setState(554); blends_declaration(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(562); + setState(555); pso_param(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(563); + setState(556); match(SIGParser::COMMENT); break; } @@ -5487,15 +5472,15 @@ SIGParser::Graphics_pso_blockContext* SIGParser::graphics_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(569); + setState(562); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70368744161504) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541065217) != 0) { - setState(566); + setState(559); graphics_pso_stat(); - setState(571); + setState(564); _errHandler->sync(this); _la = _input->LA(1); } @@ -5588,35 +5573,35 @@ SIGParser::Graphics_pso_definitionContext* SIGParser::graphics_pso_definition() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(575); + setState(568); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 44, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(572); + setState(565); option_block(); } - setState(577); + setState(570); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 44, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); } - setState(578); + setState(571); match(SIGParser::GRAPHICS_PSO); - setState(579); + setState(572); name_id(); - setState(581); + setState(574); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(580); + setState(573); inherit(); } - setState(583); + setState(576); match(SIGParser::OBRACE); - setState(584); + setState(577); graphics_pso_block(); - setState(585); + setState(578); match(SIGParser::CBRACE); } @@ -5680,19 +5665,19 @@ SIGParser::Rtx_pso_statContext* SIGParser::rtx_pso_stat() { exitRule(); }); try { - setState(589); + setState(582); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ROOTSIG: { enterOuterAlt(_localctx, 1); - setState(587); + setState(580); root_sig(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(588); + setState(581); match(SIGParser::COMMENT); break; } @@ -5764,15 +5749,15 @@ SIGParser::Rtx_pso_blockContext* SIGParser::rtx_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(594); + setState(587); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::ROOTSIG || _la == SIGParser::COMMENT) { - setState(591); + setState(584); rtx_pso_stat(); - setState(596); + setState(589); _errHandler->sync(this); _la = _input->LA(1); } @@ -5856,23 +5841,23 @@ SIGParser::Rtx_pso_definitionContext* SIGParser::rtx_pso_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(597); + setState(590); match(SIGParser::RAYTRACE_PSO); - setState(598); + setState(591); name_id(); - setState(600); + setState(593); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(599); + setState(592); inherit(); } - setState(602); + setState(595); match(SIGParser::OBRACE); - setState(603); + setState(596); rtx_pso_block(); - setState(604); + setState(597); match(SIGParser::CBRACE); } @@ -5930,7 +5915,7 @@ SIGParser::Node_param_idContext* SIGParser::node_param_id() { }); try { enterOuterAlt(_localctx, 1); - setState(606); + setState(599); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 15872) != 0)) { @@ -6011,13 +5996,13 @@ SIGParser::Node_paramContext* SIGParser::node_param() { }); try { enterOuterAlt(_localctx, 1); - setState(608); + setState(601); node_param_id(); - setState(609); + setState(602); match(SIGParser::ASSIGN); - setState(610); + setState(603); value_id(); - setState(611); + setState(604); match(SIGParser::SCOL); } @@ -6099,25 +6084,25 @@ SIGParser::Node_output_declContext* SIGParser::node_output_decl() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(616); + setState(609); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(613); + setState(606); option_block(); } - setState(618); + setState(611); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); } - setState(619); + setState(612); match(SIGParser::NODE_OUTPUT); - setState(620); + setState(613); type_id(); - setState(621); + setState(614); name_id(); - setState(622); + setState(615); match(SIGParser::SCOL); } @@ -6185,7 +6170,7 @@ SIGParser::Node_statContext* SIGParser::node_stat() { exitRule(); }); try { - setState(627); + setState(620); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::T__8: @@ -6194,7 +6179,7 @@ SIGParser::Node_statContext* SIGParser::node_stat() { case SIGParser::T__11: case SIGParser::T__12: { enterOuterAlt(_localctx, 1); - setState(624); + setState(617); node_param(); break; } @@ -6202,14 +6187,14 @@ SIGParser::Node_statContext* SIGParser::node_stat() { case SIGParser::OSBRACE: case SIGParser::NODE_OUTPUT: { enterOuterAlt(_localctx, 2); - setState(625); + setState(618); node_output_decl(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(626); + setState(619); match(SIGParser::COMMENT); break; } @@ -6281,15 +6266,15 @@ SIGParser::Node_blockContext* SIGParser::node_block() { }); try { enterOuterAlt(_localctx, 1); - setState(632); + setState(625); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 15872) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 536875009) != 0) { - setState(629); + setState(622); node_stat(); - setState(634); + setState(627); _errHandler->sync(this); _la = _input->LA(1); } @@ -6368,15 +6353,15 @@ SIGParser::Node_definitionContext* SIGParser::node_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(635); + setState(628); match(SIGParser::NODE); - setState(636); + setState(629); name_id(); - setState(637); + setState(630); match(SIGParser::OBRACE); - setState(638); + setState(631); node_block(); - setState(639); + setState(632); match(SIGParser::CBRACE); } @@ -6452,40 +6437,40 @@ SIGParser::Workgraph_pso_statContext* SIGParser::workgraph_pso_stat() { exitRule(); }); try { - setState(646); + setState(639); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 52, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 51, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(641); + setState(634); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(642); + setState(635); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(643); + setState(636); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(644); + setState(637); node_definition(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(645); + setState(638); match(SIGParser::COMMENT); break; } @@ -6557,15 +6542,15 @@ SIGParser::Workgraph_pso_blockContext* SIGParser::workgraph_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(651); + setState(644); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 134201376) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541067265) != 0) { - setState(648); + setState(641); workgraph_pso_stat(); - setState(653); + setState(646); _errHandler->sync(this); _la = _input->LA(1); } @@ -6658,35 +6643,35 @@ SIGParser::Workgraph_pso_definitionContext* SIGParser::workgraph_pso_definition( try { size_t alt; enterOuterAlt(_localctx, 1); - setState(657); + setState(650); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 54, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 53, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(654); + setState(647); option_block(); } - setState(659); + setState(652); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 54, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 53, _ctx); } - setState(660); + setState(653); match(SIGParser::WORKGRAPH_PSO); - setState(661); + setState(654); name_id(); - setState(663); + setState(656); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(662); + setState(655); inherit(); } - setState(665); + setState(658); match(SIGParser::OBRACE); - setState(666); + setState(659); workgraph_pso_block(); - setState(667); + setState(660); match(SIGParser::CBRACE); } @@ -6754,26 +6739,26 @@ SIGParser::Rtx_pass_statContext* SIGParser::rtx_pass_stat() { exitRule(); }); try { - setState(672); + setState(665); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 56, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 55, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(669); + setState(662); shader(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(670); + setState(663); match(SIGParser::COMMENT); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(671); + setState(664); pso_param(); break; } @@ -6845,16 +6830,16 @@ SIGParser::Rtx_pass_blockContext* SIGParser::rtx_pass_block() { }); try { enterOuterAlt(_localctx, 1); - setState(677); + setState(670); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70368744161280) != 0 || _la == SIGParser::OSBRACE || _la == SIGParser::COMMENT) { - setState(674); + setState(667); rtx_pass_stat(); - setState(679); + setState(672); _errHandler->sync(this); _la = _input->LA(1); } @@ -6947,35 +6932,35 @@ SIGParser::Rtx_pass_definitionContext* SIGParser::rtx_pass_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(683); + setState(676); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 58, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(680); + setState(673); option_block(); } - setState(685); + setState(678); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 58, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); } - setState(686); + setState(679); match(SIGParser::RAYTRACE_PASS); - setState(687); + setState(680); name_id(); - setState(689); + setState(682); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(688); + setState(681); inherit(); } - setState(691); + setState(684); match(SIGParser::OBRACE); - setState(692); + setState(685); rtx_pass_block(); - setState(693); + setState(686); match(SIGParser::CBRACE); } @@ -7039,7 +7024,7 @@ SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { exitRule(); }); try { - setState(697); + setState(690); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::T__13: @@ -7057,14 +7042,14 @@ SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { case SIGParser::T__25: case SIGParser::OSBRACE: { enterOuterAlt(_localctx, 1); - setState(695); + setState(688); shader(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(696); + setState(689); match(SIGParser::COMMENT); break; } @@ -7136,16 +7121,16 @@ SIGParser::Rtx_raygen_blockContext* SIGParser::rtx_raygen_block() { }); try { enterOuterAlt(_localctx, 1); - setState(702); + setState(695); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 134201344) != 0 || _la == SIGParser::OSBRACE || _la == SIGParser::COMMENT) { - setState(699); + setState(692); rtx_raygen_stat(); - setState(704); + setState(697); _errHandler->sync(this); _la = _input->LA(1); } @@ -7238,35 +7223,35 @@ SIGParser::Rtx_raygen_definitionContext* SIGParser::rtx_raygen_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(708); + setState(701); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 62, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(705); + setState(698); option_block(); } - setState(710); + setState(703); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 62, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); } - setState(711); + setState(704); match(SIGParser::RAYTRACE_RAYGEN); - setState(712); + setState(705); name_id(); - setState(714); + setState(707); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(713); + setState(706); inherit(); } - setState(716); + setState(709); match(SIGParser::OBRACE); - setState(717); + setState(710); rtx_raygen_block(); - setState(718); + setState(711); match(SIGParser::CBRACE); } @@ -7344,23 +7329,23 @@ SIGParser::View_declarationContext* SIGParser::view_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(723); + setState(716); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 63, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(720); + setState(713); option_block(); } - setState(725); + setState(718); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 63, _ctx); } - setState(726); + setState(719); type_id(); - setState(727); + setState(720); name_id(); - setState(728); + setState(721); match(SIGParser::SCOL); } @@ -7424,20 +7409,20 @@ SIGParser::View_statContext* SIGParser::view_stat() { exitRule(); }); try { - setState(732); + setState(725); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::OSBRACE: case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(730); + setState(723); view_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(731); + setState(724); match(SIGParser::COMMENT); break; } @@ -7509,14 +7494,14 @@ SIGParser::View_blockContext* SIGParser::view_block() { }); try { enterOuterAlt(_localctx, 1); - setState(737); + setState(730); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 553648129) != 0) { - setState(734); + setState(727); view_stat(); - setState(739); + setState(732); _errHandler->sync(this); _la = _input->LA(1); } @@ -7609,35 +7594,35 @@ SIGParser::View_definitionContext* SIGParser::view_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(743); + setState(736); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 66, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(740); + setState(733); option_block(); } - setState(745); + setState(738); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 66, _ctx); } - setState(746); + setState(739); match(SIGParser::VIEW); - setState(747); + setState(740); name_id(); - setState(749); + setState(742); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(748); + setState(741); inherit(); } - setState(751); + setState(744); match(SIGParser::OBRACE); - setState(752); + setState(745); view_block(); - setState(753); + setState(746); match(SIGParser::CBRACE); } @@ -7728,35 +7713,35 @@ SIGParser::Pass_definitionContext* SIGParser::pass_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(758); + setState(751); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 69, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(755); + setState(748); option_block(); } - setState(760); + setState(753); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 69, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); } - setState(761); + setState(754); match(SIGParser::PASS); - setState(762); + setState(755); name_id(); - setState(764); + setState(757); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::T__7) { - setState(763); + setState(756); inherit(); } - setState(766); + setState(759); match(SIGParser::OBRACE); - setState(767); + setState(760); view_block(); - setState(768); + setState(761); match(SIGParser::CBRACE); } @@ -7833,32 +7818,32 @@ SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { exitRule(); }); try { - setState(780); + setState(773); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::OSBRACE: case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(773); + setState(766); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::OSBRACE) { - setState(770); + setState(763); option_block(); - setState(775); + setState(768); _errHandler->sync(this); _la = _input->LA(1); } - setState(776); + setState(769); name_id(); - setState(777); + setState(770); match(SIGParser::SCOL); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(779); + setState(772); match(SIGParser::COMMENT); break; } @@ -7930,14 +7915,14 @@ SIGParser::Pipeline_blockContext* SIGParser::pipeline_block() { }); try { enterOuterAlt(_localctx, 1); - setState(785); + setState(778); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 553648129) != 0) { - setState(782); + setState(775); pipeline_stat(); - setState(787); + setState(780); _errHandler->sync(this); _la = _input->LA(1); } @@ -8016,15 +8001,15 @@ SIGParser::Pipeline_definitionContext* SIGParser::pipeline_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(788); + setState(781); match(SIGParser::PIPELINE); - setState(789); + setState(782); name_id(); - setState(790); + setState(783); match(SIGParser::OBRACE); - setState(791); + setState(784); pipeline_block(); - setState(792); + setState(785); match(SIGParser::CBRACE); } @@ -8098,19 +8083,19 @@ SIGParser::Enum_value_declarationContext* SIGParser::enum_value_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(794); + setState(787); name_id(); - setState(797); + setState(790); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::ASSIGN) { - setState(795); + setState(788); match(SIGParser::ASSIGN); - setState(796); + setState(789); value_id(); } - setState(799); + setState(792); match(SIGParser::SCOL); } @@ -8174,19 +8159,19 @@ SIGParser::Enum_statContext* SIGParser::enum_stat() { exitRule(); }); try { - setState(803); + setState(796); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(801); + setState(794); enum_value_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(802); + setState(795); match(SIGParser::COMMENT); break; } @@ -8258,15 +8243,15 @@ SIGParser::Enum_blockContext* SIGParser::enum_block() { }); try { enterOuterAlt(_localctx, 1); - setState(808); + setState(801); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::ID || _la == SIGParser::COMMENT) { - setState(805); + setState(798); enum_stat(); - setState(810); + setState(803); _errHandler->sync(this); _la = _input->LA(1); } @@ -8345,15 +8330,15 @@ SIGParser::Enum_definitionContext* SIGParser::enum_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(811); + setState(804); match(SIGParser::ENUM); - setState(812); + setState(805); name_id(); - setState(813); + setState(806); match(SIGParser::OBRACE); - setState(814); + setState(807); enum_block(); - setState(815); + setState(808); match(SIGParser::CBRACE); } @@ -8411,7 +8396,7 @@ SIGParser::Shader_typeContext* SIGParser::shader_type() { }); try { enterOuterAlt(_localctx, 1); - setState(817); + setState(810); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 134201344) != 0)) { @@ -8477,7 +8462,7 @@ SIGParser::Pso_param_idContext* SIGParser::pso_param_id() { }); try { enterOuterAlt(_localctx, 1); - setState(819); + setState(812); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 70368609959936) != 0)) { @@ -8551,7 +8536,7 @@ SIGParser::Bool_typeContext* SIGParser::bool_type() { }); try { enterOuterAlt(_localctx, 1); - setState(821); + setState(814); _la = _input->LA(1); if (!(_la == SIGParser::TRUE diff --git a/sources/SIGParser/.antlr/SIGParser.h b/sources/SIGParser/.antlr/SIGParser.h index c37abd64e..dd6cedf31 100644 --- a/sources/SIGParser/.antlr/SIGParser.h +++ b/sources/SIGParser/.antlr/SIGParser.h @@ -41,7 +41,7 @@ class SIGParser : public antlr4::Parser { RulePointer = 21, RulePso_param = 22, RuleClass_no_template = 23, RuleType_with_template = 24, RuleInherit_id = 25, RuleName_id = 26, RuleOption_id = 27, RuleOwner_id = 28, RuleTemplate_id = 29, RuleFunction_id = 30, RuleValue_id = 31, RuleValue_id_ignore = 32, - RuleType_id = 33, RuleInsert_block = 34, RulePath_id = 35, RuleInherit = 36, + RuleType_id = 33, RuleInsert_block = 34, RuleShader_path = 35, RuleInherit = 36, RuleLayout_stat = 37, RuleLayout_block = 38, RuleLayout_definition = 39, RuleTable_stat = 40, RuleTable_block = 41, RuleTable_definition = 42, RuleRt_color_declaration = 43, RuleRt_ds_declaration = 44, RuleRt_stat = 45, @@ -114,7 +114,7 @@ class SIGParser : public antlr4::Parser { class Value_id_ignoreContext; class Type_idContext; class Insert_blockContext; - class Path_idContext; + class Shader_pathContext; class InheritContext; class Layout_statContext; class Layout_blockContext; @@ -807,14 +807,12 @@ class SIGParser : public antlr4::Parser { Insert_blockContext* insert_block(); - class Path_idContext : public antlr4::ParserRuleContext { + class Shader_pathContext : public antlr4::ParserRuleContext { public: - Path_idContext(antlr4::ParserRuleContext *parent, size_t invokingState); + Shader_pathContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; - std::vector ID(); - antlr4::tree::TerminalNode* ID(size_t i); - std::vector DIV(); - antlr4::tree::TerminalNode* DIV(size_t i); + antlr4::tree::TerminalNode *STRING(); + antlr4::tree::TerminalNode *ID(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; @@ -823,7 +821,7 @@ class SIGParser : public antlr4::Parser { }; - Path_idContext* path_id(); + Shader_pathContext* shader_path(); class InheritContext : public antlr4::ParserRuleContext { public: @@ -1092,7 +1090,7 @@ class SIGParser : public antlr4::Parser { virtual size_t getRuleIndex() const override; Shader_typeContext *shader_type(); antlr4::tree::TerminalNode *ASSIGN(); - Path_idContext *path_id(); + Shader_pathContext *shader_path(); antlr4::tree::TerminalNode *SCOL(); std::vector option_block(); Option_blockContext* option_block(size_t i); diff --git a/sources/SIGParser/.antlr/SIGVisitor.h b/sources/SIGParser/.antlr/SIGVisitor.h index 050e5fad3..70036e4be 100644 --- a/sources/SIGParser/.antlr/SIGVisitor.h +++ b/sources/SIGParser/.antlr/SIGVisitor.h @@ -89,7 +89,7 @@ class SIGVisitor : public antlr4::tree::AbstractParseTreeVisitor { virtual std::any visitInsert_block(SIGParser::Insert_blockContext *context) = 0; - virtual std::any visitPath_id(SIGParser::Path_idContext *context) = 0; + virtual std::any visitShader_path(SIGParser::Shader_pathContext *context) = 0; virtual std::any visitInherit(SIGParser::InheritContext *context) = 0; diff --git a/sources/SIGParser/Diagnostics.h b/sources/SIGParser/Diagnostics.h index 0a8baac42..0cf758e06 100644 --- a/sources/SIGParser/Diagnostics.h +++ b/sources/SIGParser/Diagnostics.h @@ -7,10 +7,18 @@ class Diagnostics { public: + // Replace `length` characters at the entry's loc with `replacement`. + struct Fix + { + size_t length = 0; + std::string replacement; + }; + struct Entry { SourceLocation loc; std::string message; + std::optional fix; }; private: @@ -28,9 +36,9 @@ class Diagnostics errors.clear(); } - void error(const SourceLocation& loc, std::string message) + void error(const SourceLocation& loc, std::string message, std::optional fix = {}) { - errors.push_back({ loc, std::move(message) }); + errors.push_back({ loc, std::move(message), std::move(fix) }); } void error(const parsed_type& at, std::string message) diff --git a/sources/SIGParser/LSP.cpp b/sources/SIGParser/LSP.cpp index c1e6b27aa..32cd6864a 100644 --- a/sources/SIGParser/LSP.cpp +++ b/sources/SIGParser/LSP.cpp @@ -361,6 +361,23 @@ namespace std::map last_good; // key_of(path) -> last parse without syntax errors std::map published_uri; // key_of(path) -> uri that currently shows diagnostics std::filesystem::path root; // the sigs/ directory being validated + + // State of the last revalidate(), which definition/completion answer from. + // A file with syntax errors is represented by its last good parse. + Parsed model; + std::map files; // key_of(path) -> path + std::map texts; // key_of(path) -> text that was validated + + // What was last published per file, kept so a codeAction request can + // find the fix behind the diagnostic the user clicked. + struct PublishedDiag + { + size_t line, c0, c1; + std::string message; + std::optional fix; + }; + std::map> file_diags; + bool dirty = false; bool shutting_down = false; @@ -413,10 +430,10 @@ namespace diagnostics().clear(); - std::map files; - std::map texts; + files.clear(); + texts.clear(); std::set broken; - Parsed merged; + Parsed& merged = model = Parsed{}; std::error_code ec; for (auto it = std::filesystem::recursive_directory_iterator(root, ec); @@ -470,6 +487,7 @@ namespace diagnostics().error(SourceLocation{}, std::string("internal: ") + e.what()); } + file_diags.clear(); std::map> per_file; const auto& all = diagnostics().entries(); for (size_t i = 0; i < all.size(); ++i) @@ -487,8 +505,10 @@ namespace size_t line = d.loc.line ? d.loc.line - 1 : 0; size_t col = d.loc.column ? d.loc.column - 1 : 0; - auto [c0, c1] = texts.count(key) ? word_range(texts[key], d.loc.line, col) : std::pair{ col, col + 1 }; + auto [c0, c1] = d.fix ? std::pair{ col, col + d.fix->length } + : texts.count(key) ? word_range(texts[key], d.loc.line, col) : std::pair{ col, col + 1 }; + file_diags[key].push_back({ line, c0, c1, d.message, d.fix }); per_file[key].push_back(std::format( R"({{"range":{{"start":{{"line":{},"character":{}}},"end":{{"line":{},"character":{}}}}},"severity":1,"source":"sig","message":"{}"}})", line, c0, line, c1, json_escape(d.message))); @@ -521,6 +541,893 @@ namespace published_uri = std::move(now_published); } + // ---- navigation: go-to-definition and completion ---------------------- + + struct Symbol + { + std::string name; + std::string detail; + int kind = 0; // LSP CompletionItemKind + SourceLocation loc; + }; + + static constexpr int K_Field = 5, K_Class = 7, K_Module = 9, K_Property = 10, K_Enum = 13, + K_Keyword = 14, K_File = 17, K_EnumMember = 20, K_Constant = 21, K_Struct = 22; + + // Declaration keyword -> KNOWN_OPTIONS kind of that declaration. + inline static const std::map DECL_KIND = { + { "struct", "struct" }, { "PassNode", "PassNode" }, { "PassView", "view" }, { "layout", "layout" }, + { "rt", "render target" }, { "enum", "enum" }, { "Pipeline", "Pipeline" }, + { "ComputePSO", "ComputePSO" }, { "GraphicsPSO", "GraphicsPSO" }, { "WorkgraphPSO", "WorkgraphPSO" }, + { "RaytracePSO", "RaytracePSO" }, { "RaytraceRaygen", "RaytraceRaygen" }, { "RaytracePass", "RaytracePass" }, + }; + + // Declaration keyword -> KNOWN_OPTIONS kind of the things declared in its body. + inline static const std::map BODY_KIND = { + { "struct", "struct field" }, { "PassNode", "PassNode field" }, { "PassView", "view field" }, + { "layout", "slot" }, { "Pipeline", "pipeline entry" }, + }; + + // Mirrors SIG.g4's shader_type rule. + inline static const std::set SHADER_STAGES = { + "compute", "vertex", "pixel", "domain", "hull", "geometry", "miss", "closest_hit", + "any_hit", "raygen", "amplification", "mesh", "shader", + }; + + static bool is_ident(char c) + { + return std::isalnum((unsigned char)c) || c == '_'; + } + + static size_t offset_of(const std::string& text, size_t line0, size_t ch) + { + size_t pos = 0; + for (size_t l = 0; l < line0; ++l) + { + pos = text.find('\n', pos); + if (pos == std::string::npos) + return text.size(); + ++pos; + } + size_t eol = text.find('\n', pos); + return std::min(pos + ch, eol == std::string::npos ? text.size() : eol); + } + + struct Word + { + size_t begin = 0, end = 0; + std::string text; + std::string owner; // identifier before the separator, if any + char separator = 0; // ':' for Owner::word, '.' for owner.word + }; + + // `whole` takes the identifier around the cursor (definition); otherwise + // only the part before it, which is what completion filters on. + static Word word_at(const std::string& text, size_t offset, bool whole) + { + Word w; + w.begin = offset; + while (w.begin > 0 && is_ident(text[w.begin - 1])) + --w.begin; + w.end = offset; + if (whole) + while (w.end < text.size() && is_ident(text[w.end])) + ++w.end; + w.text = text.substr(w.begin, w.end - w.begin); + + size_t p = w.begin; + while (p > 0 && (text[p - 1] == ' ' || text[p - 1] == '\t')) + --p; + if (p >= 2 && text[p - 1] == ':' && text[p - 2] == ':') + { + w.separator = ':'; + p -= 2; + } + else if (p >= 1 && text[p - 1] == '.') + { + w.separator = '.'; + p -= 1; + } + if (w.separator) + { + while (p > 0 && (text[p - 1] == ' ' || text[p - 1] == '\t')) + --p; + size_t e = p; + while (p > 0 && is_ident(text[p - 1])) + --p; + w.owner = text.substr(p, e - p); + } + return w; + } + + // Walks text[0, offset) skipping comments, strings, backtick spans and + // %{ }% blocks, and returns the top-level declaration whose body the + // offset is inside ({keyword, name}; empty at top level). + static std::pair enclosing_decl(const std::string& text, size_t offset) + { + std::pair current, pending; + bool want_name = false; + int depth = 0; + + for (size_t i = 0; i < offset; ++i) + { + char c = text[i]; + if (c == '#') + { + while (i < offset && text[i] != '\n') + ++i; + } + else if (c == '`' || c == '"') + { + for (++i; i < offset && text[i] != c; ++i) {} + } + else if (c == '%' && i + 1 < offset && text[i + 1] == '{') + { + size_t end = text.find("}%", i + 2); + i = end == std::string::npos ? offset : end + 1; + } + else if (c == '{') + { + if (depth++ == 0) + current = pending; + } + else if (c == '}') + { + if (depth > 0 && --depth == 0) + current = pending = {}; + } + else if (is_ident(c) && depth == 0) + { + size_t b = i; + while (i < offset && is_ident(text[i])) + ++i; + std::string id = text.substr(b, i - b); + --i; + if (want_name) + { + pending.second = id; + want_name = false; + } + else if (DECL_KIND.count(id)) + { + pending = { id, "" }; + want_name = true; + } + } + } + return depth > 0 ? current : std::pair{}; + } + + // The first word after the option block(s) at `offset`: what those + // options are attached to. + static std::string word_after_options(const std::string& text, size_t offset) + { + // While typing, the block at the cursor is usually still unclosed; a + // plain find(']') would jump to the next block and read the wrong + // declaration. Stop at the end of the line instead. + size_t i = text.find_first_of("]\n", offset); + if (i == std::string::npos) + return {}; + for (++i; i < text.size();) + { + char c = text[i]; + if (std::isspace((unsigned char)c)) + ++i; + else if (c == '#') + while (i < text.size() && text[i] != '\n') + ++i; + else if (c == '[') + { + size_t end = text.find(']', i); + if (end == std::string::npos) + return {}; + i = end + 1; + } + else + { + size_t b = i; + while (i < text.size() && is_ident(text[i])) + ++i; + return text.substr(b, i - b); + } + } + return {}; + } + + // KNOWN_OPTIONS kind for an option name typed at `offset`. + static std::string option_kind_at(const std::string& text, size_t offset) + { + auto [keyword, name] = enclosing_decl(text, offset); + std::string next = word_after_options(text, offset); + + if (keyword.empty()) + { + auto it = DECL_KIND.find(next); + return it != DECL_KIND.end() ? it->second : ""; + } + if (auto it = BODY_KIND.find(keyword); it != BODY_KIND.end()) + return it->second; + + // Inside a PSO body the options belong to whatever statement follows. + if (next == "define") return "define"; + if (next == "rtv") return "rtv"; + if (next == "blend") return "blend"; + if (next == "NodeOutput") return "workgraph node output"; + if (SHADER_STAGES.count(next)) return "shader"; + return "PSO param"; + } + + // True when the cursor is where an option *name* goes: inside `[`, after + // `[` or `,`, before any `=`. + static bool at_option_name(const std::string& text, size_t offset) + { + size_t line_start = text.rfind('\n', offset ? offset - 1 : 0); + line_start = line_start == std::string::npos ? 0 : line_start + 1; + std::string_view before(text.data() + line_start, offset - line_start); + + size_t open = before.rfind('['); + if (open == std::string_view::npos || before.find(']', open) != std::string_view::npos) + return false; + std::string_view seg = before.substr(open + 1); + if (size_t comma = seg.rfind(','); comma != std::string_view::npos) + seg = seg.substr(comma + 1); + return seg.find('=') == std::string_view::npos && seg.find('{') == std::string_view::npos; + } + + static bool in_comment(const std::string& text, size_t offset) + { + size_t line_start = text.rfind('\n', offset ? offset - 1 : 0); + line_start = line_start == std::string::npos ? 0 : line_start + 1; + return text.find('#', line_start) < offset; + } + + std::vector top_level_symbols() const + { + std::vector out; + auto add = [&](const auto& container, const char* detail, int kind) + { + for (const auto& item : container) + out.push_back({ item.name, detail, kind, item.name_loc }); + }; + add(model.tables, "struct", K_Struct); + add(model.enums, "enum", K_Enum); + add(model.layouts, "layout", K_Module); + add(model.views, "PassView", K_Class); + add(model.passes, "PassNode", K_Class); + add(model.compute_pso, "ComputePSO", K_Class); + add(model.graphics_pso, "GraphicsPSO", K_Class); + add(model.workgraph_pso, "WorkgraphPSO", K_Class); + add(model.raytrace_pso, "RaytracePSO", K_Class); + add(model.raytrace_gen, "RaytraceRaygen", K_Class); + add(model.raytrace_pass, "RaytracePass", K_Class); + add(model.rt, "render target", K_Class); + add(model.pipelines, "Pipeline", K_Module); + add(model.consts, "const", K_Constant); + return out; + } + + void collect_members(const std::string& owner, std::vector& out, int depth = 0) const + { + if (depth > 16) + return; + + if (const Table* t = model.tables.find(owner)) + { + for (const auto& v : t->values) + out.push_back({ v.name, v.get_type(), K_Field, v.name_loc }); + for (const auto& parent : t->parent) + collect_members(parent, out, depth + 1); + } + if (const Enum* e = model.enums.find(owner)) + for (const auto& v : e->values) + out.push_back({ v.name, owner, K_EnumMember, v.name_loc }); + if (const Layout* l = model.layouts.find(owner)) + { + for (const auto& s : l->slots) + out.push_back({ s.name, "slot", K_Field, s.name_loc }); + for (const auto& s : l->samplers) + out.push_back({ s.name, "sampler", K_Field, s.name_loc }); + for (const auto& parent : l->parent) + collect_members(parent, out, depth + 1); + } + auto add_params = [&](const View* v) + { + for (const auto& p : v->params) + out.push_back({ p.name, p.get_type(), K_Field, p.name_loc }); + if (v->find_option("Multiple")) + out.push_back({ "pass_index", "uint32_t, implicit on [Multiple]", K_Field, {} }); + }; + if (const Pass* p = model.passes.find(owner)) + add_params(p); + if (const View* v = model.views.find(owner)) + add_params(v); + } + + std::string uri_for_file(const std::string& file) const + { + std::string key = key_of(file); + if (auto doc = open_docs.find(key); doc != open_docs.end()) + return doc->second.uri; + return path_to_uri(std::filesystem::path(file)); + } + + std::string location_json(const SourceLocation& loc, size_t length) const + { + size_t line = loc.line ? loc.line - 1 : 0, col = loc.column ? loc.column - 1 : 0; + return std::format(R"({{"uri":"{}","range":{{"start":{{"line":{},"character":{}}},"end":{{"line":{},"character":{}}}}}}})", + json_escape(uri_for_file(loc.file)), line, col, line, col + length); + } + + const std::string* doc_text(const std::string& uri) + { + std::string key = key_of(uri_to_path(uri)); + if (auto doc = open_docs.find(key); doc != open_docs.end()) + return &doc->second.text; + if (auto t = texts.find(key); t != texts.end()) + return &t->second; + return nullptr; + } + + // ` = ""` with the cursor inside the quotes (the closing + // quote may not be typed yet). + struct ShaderString + { + std::string stage; + size_t content_begin = 0; // offset of the first character after the opening quote + std::string content; // the whole quoted text + }; + + static std::optional shader_string_at(const std::string& text, size_t offset) + { + size_t ls = text.rfind('\n', offset ? offset - 1 : 0); + ls = ls == std::string::npos ? 0 : ls + 1; + size_t le = text.find('\n', offset); + le = le == std::string::npos ? text.size() : le; + + size_t i = ls; + auto skip_ws = [&] { while (i < le && (text[i] == ' ' || text[i] == '\t')) ++i; }; + skip_ws(); + size_t sb = i; + while (i < le && is_ident(text[i])) ++i; + ShaderString s; + s.stage = text.substr(sb, i - sb); + skip_ws(); + if (!SHADER_STAGES.count(s.stage) || i >= le || text[i] != '=') + return {}; + ++i; + skip_ws(); + if (i >= le || text[i] != '"') + return {}; + + s.content_begin = i + 1; + size_t close = text.find('"', s.content_begin); + size_t content_end = close == std::string::npos || close > le ? le : close; + if (offset < s.content_begin || offset > content_end) + return {}; + s.content = text.substr(s.content_begin, content_end - s.content_begin); + return s; + } + + // When the cursor is on an option's value (`[Always = Re|`), that + // option's name; not inside a `{...}` value list. + static std::optional option_value_at(const std::string& text, size_t offset) + { + size_t line_start = text.rfind('\n', offset ? offset - 1 : 0); + line_start = line_start == std::string::npos ? 0 : line_start + 1; + std::string_view before(text.data() + line_start, offset - line_start); + + size_t open = before.rfind('['); + if (open == std::string_view::npos || before.find(']', open) != std::string_view::npos) + return {}; + + std::string_view seg = before.substr(open + 1); + int braces = 0; + size_t item = 0; + for (size_t i = 0; i < seg.size(); ++i) + { + if (seg[i] == '{') ++braces; + else if (seg[i] == '}') --braces; + else if (seg[i] == ',' && braces == 0) item = i + 1; + } + if (braces != 0) + return {}; + + seg = seg.substr(item); + size_t eq = seg.find('='); + if (eq == std::string_view::npos || (eq + 1 < seg.size() && seg[eq + 1] == '=')) + return {}; + + std::string_view name = seg.substr(0, eq); + while (!name.empty() && std::isspace((unsigned char)name.front())) name.remove_prefix(1); + while (!name.empty() && std::isspace((unsigned char)name.back())) name.remove_suffix(1); + if (name.empty() || !std::all_of(name.begin(), name.end(), is_ident)) + return {}; + return std::string(name); + } + + template + void for_each_option_holder(F&& f) const + { + auto pso = [&](const PSO& p) + { + f(p); + for (const auto& s : p.shaders) f(s); + for (const auto& d : p.defines) f(d); + }; + for (const auto& t : model.tables) { f(t); for (const auto& v : t.values) f(v); } + for (const auto& l : model.layouts) { f(l); for (const auto& s : l.slots) f(s); } + for (const auto& r : model.rt) f(r); + for (const auto& p : model.compute_pso) pso(p); + for (const auto& p : model.graphics_pso) { pso(p); for (const auto& x : p.params) f(x); } + for (const auto& p : model.workgraph_pso) + { + pso(p); + for (const auto& n : p.nodes) { for (const auto& x : n.params) f(x); for (const auto& o : n.outputs) f(o); } + } + for (const auto& p : model.raytrace_pso) pso(p); + for (const auto& p : model.raytrace_gen) pso(p); + for (const auto& p : model.raytrace_pass) { pso(p); for (const auto& x : p.params) f(x); } + for (const auto& v : model.views) { f(v); for (const auto& x : v.params) f(x); } + for (const auto& v : model.passes) { f(v); for (const auto& x : v.params) f(x); } + for (const auto& p : model.pipelines) for (const auto& e : p.entries) f(e); + } + + // Every value some .sig already gives this option. No hand-kept lists: + // [Always] offers the flags actually in use, [Bind] the slots, [Format] + // the formats. + std::set values_used_for(const std::string& option_name) const + { + std::set out; + for_each_option_holder([&](const have_options& holder) + { + const option* o = holder.find_option(option_name); + if (!o || o->value_atom.is_raw) + return; + const auto& atom = o->value_atom; + if (!atom.values.empty()) + { + for (const auto& v : atom.values) + if (!v.expr.empty() && !v.is_raw) + out.insert(v.expr); + } + else if (atom.terms.size() <= 1 && !atom.expr.empty()) + out.insert(atom.owner_name.empty() ? atom.expr : atom.owner_name + "::" + atom.expr); + }); + return out; + } + + std::vector shader_files(const std::filesystem::path& shaders) const + { + std::vector out; + std::error_code ec; + for (auto it = std::filesystem::recursive_directory_iterator(shaders, ec); + !ec && it != std::filesystem::recursive_directory_iterator(); it.increment(ec)) + if (it->is_regular_file() && it->path().extension() == ".hlsl") + out.push_back(std::filesystem::relative(it->path(), shaders).generic_string()); + std::sort(out.begin(), out.end()); + return out; + } + + // ---- hover ------------------------------------------------------------- + + std::string members_markdown(const std::string& owner) const + { + std::vector members; + collect_members(owner, members); + std::string out; + size_t shown = 0; + for (const auto& m : members) + { + if (shown++ == 40) + { + out += std::format("\n... {} more", members.size() - 40); + break; + } + out += "\n" + (m.detail.empty() || m.kind == K_EnumMember ? m.name : m.detail + " " + m.name); + } + return out; + } + + std::string where(const SourceLocation& loc) const + { + return loc.line ? std::format("{}:{}", std::filesystem::path(loc.file).filename().string(), loc.line) : ""; + } + + std::string hover(const Json& params) + { + if (dirty) + revalidate(); + + std::string uri = params["textDocument"]["uri"].text; + const std::string* text = doc_text(uri); + if (!text) + return "null"; + size_t offset = offset_of(*text, std::stoul(params["position"]["line"].text), std::stoul(params["position"]["character"].text)); + + auto reply = [](const std::string& markdown) + { + return std::format(R"({{"contents":{{"kind":"markdown","value":"{}"}}}})", json_escape(markdown)); + }; + + if (auto s = shader_string_at(*text, offset)) + { + auto file = (shaders_root(uri_to_path(uri)) / s->content).lexically_normal(); + bool exists = !s->content.empty() && std::filesystem::is_regular_file(file); + return reply(std::format("**{}** shader\n\n`{}`{}", s->stage, file.string(), exists ? "" : "\n\n*file not found*")); + } + + Word w = word_at(*text, offset, true); + if (w.text.empty()) + return "null"; + + if (at_option_name(*text, w.begin)) + { + std::vector kinds = option_kinds(w.text); + if (kinds.empty()) + return reply(std::format("`[{}]` is not a known option", w.text)); + std::string used; + size_t n = 0; + for (const auto& v : values_used_for(w.text)) + { + if (n++ == 12) { used += ", ..."; break; } + used += (used.empty() ? "" : ", ") + ("`" + v + "`"); + } + std::string on; + for (const auto& k : kinds) + on += (on.empty() ? "" : ", ") + k; + return reply(std::format("option `[{}]`\n\naccepted on: {}{}", w.text, on, used.empty() ? "" : "\n\nvalues in use: " + used)); + } + + std::vector members; + if (w.separator == ':') + collect_members(w.owner, members); + else if ((w.separator == '.' && w.owner == "data") || (w.begin >= 7 && text->compare(w.begin - 7, 7, "exists(") == 0)) + collect_members(enclosing_decl(*text, offset).second, members); + + for (const auto& m : members) + if (m.name == w.text) + return reply(std::format("```\n{}{}\n```\n{}", m.kind == K_EnumMember ? "" : m.detail + " ", m.name, where(m.loc))); + + for (const auto& s : top_level_symbols()) + if (s.name == w.text) + { + std::string body = members_markdown(s.name); + return reply(std::format("```\n{} {}{}\n```\n{}", s.detail, s.name, body.empty() ? "" : "\n{" + body + "\n}", where(s.loc))); + } + return "null"; + } + + // ---- quick fixes ----------------------------------------------------------- + + std::string code_actions(const Json& params) + { + if (dirty) + revalidate(); + + std::string uri = params["textDocument"]["uri"].text; + size_t first = std::stoul(params["range"]["start"]["line"].text); + size_t last = std::stoul(params["range"]["end"]["line"].text); + + auto it = file_diags.find(key_of(uri_to_path(uri))); + if (it == file_diags.end()) + return "[]"; + + std::string list; + for (const auto& d : it->second) + { + if (!d.fix || d.line < first || d.line > last) + continue; + std::string range = std::format(R"({{"start":{{"line":{},"character":{}}},"end":{{"line":{},"character":{}}}}})", d.line, d.c0, d.line, d.c1); + list += (list.empty() ? "" : ",") + std::format( + R"({{"title":"Change to '{}'","kind":"quickfix","isPreferred":true,)" + R"("diagnostics":[{{"range":{},"severity":1,"source":"sig","message":"{}"}}],)" + R"("edit":{{"changes":{{"{}":[{{"range":{},"newText":"{}"}}]}}}}}})", + json_escape(d.fix->replacement), range, json_escape(d.message), json_escape(uri), range, json_escape(d.fix->replacement)); + } + return "[" + list + "]"; + } + + // ---- outline and symbol search --------------------------------------------- + + struct Decl + { + std::string name, detail; + int kind; // LSP SymbolKind + SourceLocation start, name_loc; + }; + + std::vector declarations() const + { + std::vector out; + auto add = [&](const auto& container, const char* detail, int kind) + { + for (const auto& item : container) + out.push_back({ item.name, detail, kind, item.loc, item.name_loc }); + }; + add(model.tables, "struct", 23); + add(model.enums, "enum", 10); + add(model.layouts, "layout", 3); + add(model.views, "PassView", 5); + add(model.passes, "PassNode", 5); + add(model.compute_pso, "ComputePSO", 5); + add(model.graphics_pso, "GraphicsPSO", 5); + add(model.workgraph_pso, "WorkgraphPSO", 5); + add(model.raytrace_pso, "RaytracePSO", 5); + add(model.raytrace_gen, "RaytraceRaygen", 5); + add(model.raytrace_pass, "RaytracePass", 5); + add(model.rt, "render target", 5); + add(model.pipelines, "Pipeline", 4); + add(model.consts, "const", 14); + return out; + } + + static std::string range_json(size_t l0, size_t c0, size_t l1, size_t c1) + { + return std::format(R"({{"start":{{"line":{},"character":{}}},"end":{{"line":{},"character":{}}}}})", l0, c0, l1, c1); + } + + std::string document_symbols(const Json& params) + { + if (dirty) + revalidate(); + + std::string key = key_of(uri_to_path(params["textDocument"]["uri"].text)); + std::vector mine; + for (auto& d : declarations()) + if (d.name_loc.line && key_of(d.name_loc.file) == key) + mine.push_back(d); + std::sort(mine.begin(), mine.end(), [](const Decl& a, const Decl& b) { return a.start.line < b.start.line; }); + + size_t last_line = texts.count(key) ? (size_t)std::count(texts[key].begin(), texts[key].end(), '\n') : 0; + std::string list; + for (size_t i = 0; i < mine.size(); ++i) + { + const Decl& d = mine[i]; + size_t l0 = d.start.line - 1; + // The next declaration's start bounds this one; the grammar + // records no end positions. + size_t l1 = i + 1 < mine.size() ? std::max(l0, mine[i + 1].start.line - 2) : last_line; + size_t nl = d.name_loc.line - 1, nc = d.name_loc.column - 1; + + std::vector members; + collect_members(d.name, members); + std::string children; + for (const auto& m : members) + { + if (!m.loc.line || key_of(m.loc.file) != key) + continue; + size_t ml = m.loc.line - 1, mc = m.loc.column - 1; + children += (children.empty() ? "" : ",") + std::format(R"({{"name":"{}","detail":"{}","kind":{},"range":{},"selectionRange":{}}})", + json_escape(m.name), json_escape(m.detail), m.kind == K_EnumMember ? 22 : 8, + range_json(ml, mc, ml, mc + m.name.size()), range_json(ml, mc, ml, mc + m.name.size())); + } + + list += (list.empty() ? "" : ",") + std::format(R"({{"name":"{}","detail":"{}","kind":{},"range":{},"selectionRange":{},"children":[{}]}})", + json_escape(d.name), d.detail, d.kind, range_json(l0, 0, l1, 0), range_json(nl, nc, nl, nc + d.name.size()), children); + } + return "[" + list + "]"; + } + + std::string workspace_symbols(const Json& params) + { + if (dirty) + revalidate(); + + std::string query = params["query"].text; + std::transform(query.begin(), query.end(), query.begin(), [](unsigned char c) { return (char)std::tolower(c); }); + + std::string list; + for (const auto& d : declarations()) + { + std::string lower = d.name; + std::transform(lower.begin(), lower.end(), lower.begin(), [](unsigned char c) { return (char)std::tolower(c); }); + if (!d.name_loc.line || lower.find(query) == std::string::npos) + continue; + list += (list.empty() ? "" : ",") + std::format(R"({{"name":"{}","kind":{},"containerName":"{}","location":{}}})", + json_escape(d.name), d.kind, d.detail, location_json(d.name_loc, d.name.size())); + } + return "[" + list + "]"; + } + + // ---- semantic tokens: colour user-declared names wherever they are used ---- + + // Order is the legend sent in initialize. + enum TokenType { T_Struct, T_Enum, T_Class, T_Namespace, T_EnumMember, T_Property, T_Variable }; + + std::string semantic_tokens(const Json& params) + { + if (dirty) + revalidate(); + + const std::string* text = doc_text(params["textDocument"]["uri"].text); + if (!text) + return R"({"data":[]})"; + + std::map types; + for (const auto& d : declarations()) + types.emplace(d.name, d.kind == 23 ? T_Struct : d.kind == 10 ? T_Enum : d.kind == 3 ? T_Namespace + : d.kind == 14 ? T_Variable : T_Class); + + std::string data; + size_t prev_line = 0, prev_col = 0, line = 0, line_start = 0; + auto emit = [&](size_t begin, size_t length, int type) + { + size_t col = begin - line_start; + size_t dl = line - prev_line; + size_t dc = dl == 0 ? col - prev_col : col; + data += (data.empty() ? "" : ",") + std::format("{},{},{},{},0", dl, dc, length, type); + prev_line = line; + prev_col = col; + }; + + const std::string& t = *text; + for (size_t i = 0; i < t.size(); ++i) + { + char c = t[i]; + if (c == '\n') + { + ++line; + line_start = i + 1; + } + else if (c == '#') + { + while (i + 1 < t.size() && t[i + 1] != '\n') + ++i; + } + else if (c == '"') + { + while (i + 1 < t.size() && t[i + 1] != '"' && t[i + 1] != '\n') + ++i; + ++i; + } + else if (is_ident(c) && !std::isdigit((unsigned char)c)) + { + size_t b = i; + while (i + 1 < t.size() && is_ident(t[i + 1])) + ++i; + std::string id = t.substr(b, i - b + 1); + + // `Owner::member`: colour the member by what the owner is. + size_t p = b; + while (p > 0 && (t[p - 1] == ' ' || t[p - 1] == '\t')) --p; + if (p >= 2 && t[p - 1] == ':' && t[p - 2] == ':') + { + size_t e = p - 2; + while (e > 0 && (t[e - 1] == ' ' || t[e - 1] == '\t')) --e; + size_t ob = e; + while (ob > 0 && is_ident(t[ob - 1])) --ob; + std::string owner = t.substr(ob, e - ob); + if (model.enums.find(owner)) + emit(b, id.size(), T_EnumMember); + else if (model.tables.find(owner) || model.layouts.find(owner)) + emit(b, id.size(), T_Property); + continue; + } + + if (auto it = types.find(id); it != types.end()) + emit(b, id.size(), it->second); + } + } + return R"({"data":[)" + data + "]}"; + } + + std::string definition(const Json& params) + { + if (dirty) + revalidate(); + + std::string uri = params["textDocument"]["uri"].text; + const std::string* text = doc_text(uri); + if (!text) + return "null"; + + size_t offset = offset_of(*text, std::stoul(params["position"]["line"].text), std::stoul(params["position"]["character"].text)); + + // `compute = "occlusion/downsample_depth.hlsl";` -> the file itself + if (auto s = shader_string_at(*text, offset)) + { + auto hlsl = shaders_root(uri_to_path(uri)) / s->content; + if (!s->content.empty() && std::filesystem::is_regular_file(hlsl)) + return std::format(R"({{"uri":"{}","range":{{"start":{{"line":0,"character":0}},"end":{{"line":0,"character":0}}}}}})", + json_escape(uri_for_file(hlsl.lexically_normal().string()))); + return "null"; + } + + Word w = word_at(*text, offset, true); + if (w.text.empty()) + return "null"; + + auto first_located = [&](const std::vector& symbols) -> std::string + { + for (const auto& s : symbols) + if (s.name == w.text && s.loc.line) + return location_json(s.loc, s.name.size()); + return {}; + }; + + std::vector candidates; + if (w.separator == ':') + collect_members(w.owner, candidates); + else if (w.separator == '.' && w.owner == "data") + collect_members(enclosing_decl(*text, offset).second, candidates); + else if (w.begin >= 7 && text->compare(w.begin - 7, 7, "exists(") == 0) + collect_members(enclosing_decl(*text, offset).second, candidates); + else + candidates = top_level_symbols(); + + std::string found = first_located(candidates); + return found.empty() ? "null" : found; + } + + std::string completion(const Json& params) + { + if (dirty) + revalidate(); + + std::string uri = params["textDocument"]["uri"].text; + const std::string* text = doc_text(uri); + if (!text) + return R"({"isIncomplete":false,"items":[]})"; + + size_t offset = offset_of(*text, std::stoul(params["position"]["line"].text), std::stoul(params["position"]["character"].text)); + if (in_comment(*text, offset)) + return R"({"isIncomplete":false,"items":[]})"; + + // Shader file dropdown. The edit replaces everything typed so far + // inside the quotes, so a pick works even though '/' breaks VS's + // notion of the current word. + if (auto s = shader_string_at(*text, offset)) + { + size_t line0 = std::stoul(params["position"]["line"].text); + size_t line_start = text->rfind('\n', offset ? offset - 1 : 0); + line_start = line_start == std::string::npos ? 0 : line_start + 1; + size_t from = s->content_begin - line_start, to = offset - line_start; + + std::string list; + for (const auto& f : shader_files(shaders_root(uri_to_path(uri)))) + list += (list.empty() ? "" : ",") + std::format( + R"({{"label":"{}","kind":{},"filterText":"{}","textEdit":{{"range":{},"newText":"{}"}}}})", + json_escape(f), K_File, json_escape(f), range_json(line0, from, line0, to), json_escape(f)); + return R"({"isIncomplete":false,"items":[)" + list + "]}"; + } + + Word w = word_at(*text, offset, false); + std::vector items; + + if (w.separator == ':') + collect_members(w.owner, items); + else if (w.separator == '.' && w.owner == "data") + collect_members(enclosing_decl(*text, offset).second, items); + else if (at_option_name(*text, offset)) + { + std::string kind = option_kind_at(*text, offset); + for (const auto& name : known_options(kind)) + items.push_back({ name, "option on " + kind, K_Property, {} }); + } + else if (auto option = option_value_at(*text, offset)) + { + for (const auto& v : values_used_for(*option)) + items.push_back({ v, "used for [" + *option + "]", K_Constant, {} }); + } + else + { + items = top_level_symbols(); + for (const auto& kw : sig_keywords()) + items.push_back({ kw, "keyword", K_Keyword, {} }); + } + + std::set seen; + std::string list; + for (const auto& s : items) + { + if (!seen.insert(s.name).second) + continue; + list += (list.empty() ? "" : ",") + std::format(R"({{"label":"{}","kind":{},"detail":"{}"}})", + json_escape(s.name), s.kind, json_escape(s.detail)); + } + return R"({"isIncomplete":false,"items":[)" + list + "]}"; + } + void respond(const Json& id, const std::string& result) { write_message(R"({"jsonrpc":"2.0","id":)" + id_json(id) + R"(,"result":)" + result + "}"); @@ -553,9 +1460,41 @@ namespace if (method == "initialize") { - respond(msg["id"], R"({"capabilities":{"textDocumentSync":{"openClose":true,"change":1,"save":{"includeText":false}}},)" + respond(msg["id"], R"({"capabilities":{"textDocumentSync":{"openClose":true,"change":1,"save":{"includeText":false}},)" + R"("definitionProvider":true,"hoverProvider":true,"codeActionProvider":true,)" + R"("documentSymbolProvider":true,"workspaceSymbolProvider":true,)" + R"("semanticTokensProvider":{"legend":{"tokenTypes":["struct","enum","class","namespace","enumMember","property","variable"],"tokenModifiers":[]},"full":true},)" + R"("completionProvider":{"triggerCharacters":[":",".","[",",","\"","/","="]}},)" R"("serverInfo":{"name":"sigparser","version":"1"}})"); } + else if (method == "textDocument/definition" && params) + { + respond(msg["id"], definition(*params)); + } + else if (method == "textDocument/completion" && params) + { + respond(msg["id"], completion(*params)); + } + else if (method == "textDocument/hover" && params) + { + respond(msg["id"], hover(*params)); + } + else if (method == "textDocument/codeAction" && params) + { + respond(msg["id"], code_actions(*params)); + } + else if (method == "textDocument/documentSymbol" && params) + { + respond(msg["id"], document_symbols(*params)); + } + else if (method == "workspace/symbol" && params) + { + respond(msg["id"], workspace_symbols(*params)); + } + else if (method == "textDocument/semanticTokens/full" && params) + { + respond(msg["id"], semantic_tokens(*params)); + } else if (method == "shutdown") { shutting_down = true; @@ -609,15 +1548,22 @@ int run_lsp() while (read_message(body)) { + Json msg; try { - if (!server.handle(JsonReader::parse(body))) + msg = JsonReader::parse(body); + if (!server.handle(msg)) return 0; server.idle(); } catch (std::exception& e) { std::cerr << "sigparser --lsp: " << e.what() << std::endl; + + // A request must always get a reply, or the client waits on it forever. + if (msg.has("id") && msg.has("method")) + write_message(R"({"jsonrpc":"2.0","id":)" + id_json(msg["id"]) + R"(,"error":{"code":-32603,"message":")" + + json_escape(e.what()) + "\"}}"); } } return 0; diff --git a/sources/SIGParser/Parsed.h b/sources/SIGParser/Parsed.h index ea89ccc39..d3699984c 100644 --- a/sources/SIGParser/Parsed.h +++ b/sources/SIGParser/Parsed.h @@ -55,6 +55,7 @@ struct have_name : public virtual parsed_type { std::string name; std::string source_file; // path of the .sig file that defined this item + SourceLocation name_loc; // the name token itself; loc may point at a leading [option] ~have_name() override = default; @@ -319,6 +320,11 @@ struct ExprTerm : public virtual parsed_type std::string owner; std::string text; + // Diagnostics only, not serialized: where `owner` and `text` start. For + // Function terms text_loc is where the argument of exists(...) starts. + SourceLocation owner_loc; + SourceLocation text_loc; + SERIALIZE() { ar& NVP(kind); @@ -596,7 +602,12 @@ struct Enum : public have_name struct Shader : public have_name, have_options { - std::string path; + std::string path; // relative to workdir/shaders, without ".hlsl" -- what the templates paste + + // As written, for validation and editor support; not serialized. + std::string path_literal; // contents of the quoted string, or the bare sentinel + bool path_quoted = false; + SourceLocation path_loc; // first character inside the quotes SERIALIZE() diff --git a/sources/SIGParser/Parsing.cpp b/sources/SIGParser/Parsing.cpp index cc772b473..e8ff5bd38 100644 --- a/sources/SIGParser/Parsing.cpp +++ b/sources/SIGParser/Parsing.cpp @@ -333,14 +333,31 @@ class TreeShapeListener : public SIGBaseListener { auto& elem = get_elem(); elem.name = ctx->children[0]->getText(); + elem.name_loc = SourceLocation{ file, ctx->getStart()->getLine(), ctx->getStart()->getCharPositionInLine() + 1 }; } - void enterPath_id(SIGParser::Path_idContext* ctx) override + void enterShader_path(SIGParser::Shader_pathContext* ctx) override { auto& elem = get_elem(); + auto* start = ctx->getStart(); - for (auto c : ctx->children) - elem.path += c->getText(); + if (ctx->STRING()) + { + std::string text = ctx->getText(); + elem.path_literal = text.substr(1, text.size() - 2); + elem.path_quoted = true; + elem.path_loc = SourceLocation{ file, start->getLine(), start->getCharPositionInLine() + 2 }; + + constexpr std::string_view ext = ".hlsl"; + elem.path = elem.path_literal.ends_with(ext) + ? elem.path_literal.substr(0, elem.path_literal.size() - ext.size()) + : elem.path_literal; // validate() rejects it + } + else + { + elem.path = elem.path_literal = ctx->getText(); + elem.path_loc = SourceLocation{ file, start->getLine(), start->getCharPositionInLine() + 1 }; + } } void enterInherit_id(SIGParser::Inherit_idContext* ctx) override @@ -413,23 +430,34 @@ class TreeShapeListener : public SIGBaseListener { auto& elem = get_elem(); auto& term = elem.terms.emplace_back(); + auto loc_of = [&](antlr4::ParserRuleContext* c, size_t shift = 0) + { + return SourceLocation{ file, c->getStart()->getLine(), c->getStart()->getCharPositionInLine() + 1 + shift }; + }; + term.text_loc = loc_of(ctx); if (auto* q = ctx->qualified_ref()) { term.kind = ExprTerm::Qualified; term.owner = q->owner_id()->getText(); term.text = q->value_id()->getText(); + term.owner_loc = loc_of(q->owner_id()); + term.text_loc = loc_of(q->value_id()); } else if (auto* m = ctx->member_ref()) { term.kind = ExprTerm::Member; term.owner = m->name_id(0)->getText(); term.text = m->name_id(1)->getText(); + term.owner_loc = loc_of(m->name_id(0)); + term.text_loc = loc_of(m->name_id(1)); } else if (ctx->function_id()) { term.kind = ExprTerm::Function; term.text = ctx->getText(); + if (term.text.rfind("exists(", 0) == 0) + term.text_loc = loc_of(ctx, 7); } else if (ctx->cond_op()) { @@ -565,3 +593,20 @@ Parsed parse_text(const std::string& text, const std::string& file) ANTLRInputStream input(text); return parse_input(input, file); } + +std::vector sig_keywords() +{ + ANTLRInputStream input(""); + SIGLexer lexer(&input); + const auto& vocabulary = lexer.getVocabulary(); + + // Literal names come back quoted ("'struct'"); symbolic tokens such as ID have none. + std::vector out; + for (size_t t = 1; t <= vocabulary.getMaxTokenType(); ++t) + { + std::string lit(vocabulary.getLiteralName(t)); + if (lit.size() > 2 && std::isalpha((unsigned char)lit[1])) + out.push_back(lit.substr(1, lit.size() - 2)); + } + return out; +} diff --git a/sources/SIGParser/Parsing.h b/sources/SIGParser/Parsing.h index 598b7b9fe..fe874a631 100644 --- a/sources/SIGParser/Parsing.h +++ b/sources/SIGParser/Parsing.h @@ -4,3 +4,6 @@ Parsed parse(std::wstring filename); // Parses in-memory text (an unsaved editor buffer); `file` is only used for // diagnostic locations. Parsed parse_text(const std::string& text, const std::string& file); + +// Every keyword literal in SIG.g4, for completion. +std::vector sig_keywords(); diff --git a/sources/SIGParser/SIG.g4 b/sources/SIGParser/SIG.g4 index 6bc112b91..24c98b752 100644 --- a/sources/SIGParser/SIG.g4 +++ b/sources/SIGParser/SIG.g4 @@ -134,7 +134,10 @@ type_id: type_with_template ; insert_block: INSERT_BLOCK; -path_id: (ID '/' )*? ID; +// A shader file, relative to workdir/shaders and with its extension: +// "rtx/raytracing.hlsl". The bare-ID form is only for the sentinels that name +// no file: `none` (a per-material hit shader) and `null` (with [Erase]). +shader_path: STRING | ID; inherit : ':' inherit_id (',' inherit_id)*? @@ -201,7 +204,7 @@ array_value_ids: '{' array_value_holder (',' array_value_holder)* '}'; root_sig: ROOTSIG ASSIGN name_id SCOL; -shader: option_block*? shader_type ASSIGN path_id SCOL; +shader: option_block*? shader_type ASSIGN shader_path SCOL; compute_pso_stat : root_sig diff --git a/sources/SIGParser/Validate.cpp b/sources/SIGParser/Validate.cpp index 78be66f8e..1af9e0ef8 100644 --- a/sources/SIGParser/Validate.cpp +++ b/sources/SIGParser/Validate.cpp @@ -47,16 +47,71 @@ namespace { "pipeline entry", { "Async", "Async2", "Async3" } }, }; + // Case-insensitive Levenshtein distance. + size_t edit_distance(std::string_view a, std::string_view b) + { + std::vector row(b.size() + 1); + std::iota(row.begin(), row.end(), size_t(0)); + for (size_t i = 1; i <= a.size(); ++i) + { + size_t diag = row[0]; + row[0] = i; + for (size_t j = 1; j <= b.size(); ++j) + { + size_t up = row[j]; + bool same = std::tolower((unsigned char)a[i - 1]) == std::tolower((unsigned char)b[j - 1]); + row[j] = std::min({ row[j] + 1, row[j - 1] + 1, diag + (same ? 0 : 1) }); + diag = up; + } + } + return row[b.size()]; + } + + std::optional closest(const std::string& bad, const std::vector& candidates) + { + // Loose enough for a typo or two, tight enough not to suggest an unrelated name. + size_t limit = std::max(2, bad.size() / 3); + std::optional best; + size_t best_distance = limit + 1; + for (const auto& c : candidates) + { + size_t d = edit_distance(bad, c); + if (d < best_distance && c != bad) + { + best = c; + best_distance = d; + } + } + return best; + } + + // An unknown name at `loc`: adds "did you mean" and a fix when a candidate is close. + void unknown_name(const SourceLocation& loc, std::string message, const std::string& bad, const std::vector& candidates) + { + if (auto best = closest(bad, candidates)) + diagnostics().error(loc, message + std::format("; did you mean '{}'?", *best), Diagnostics::Fix{ bad.size(), *best }); + else + diagnostics().error(loc, std::move(message)); + } + + const SourceLocation& name_loc_of(const have_name& n) + { + return n.name_loc.line ? n.name_loc : n.loc; + } + void check_options(const have_options& holder, const std::string& kind, const std::string& owner_name) { auto known = KNOWN_OPTIONS.find(kind); + std::vector names; + if (known != KNOWN_OPTIONS.end()) + names.assign(known->second.begin(), known->second.end()); for (const auto& opt : holder.options) { if (known != KNOWN_OPTIONS.end() && known->second.count(opt.name)) continue; - diagnostics().error(opt, std::format("unknown option [{}] on {} '{}'", opt.name, kind, owner_name)); + unknown_name(name_loc_of(opt), std::format("unknown option [{}] on {} '{}'", opt.name, kind, owner_name), opt.name, names); } } @@ -101,6 +156,27 @@ namespace return nullptr; } + void table_field_names(const Parsed& parsed, const std::string& table_name, std::vector& out, int depth = 0) + { + const Table* table = parsed.tables.find(table_name); + if (!table || depth > 16) + return; + for (const auto& v : table->values) + out.push_back(v.name); + for (const auto& parent : table->parent) + table_field_names(parsed, parent, out, depth + 1); + } + + std::vector param_names(const View& owner) + { + std::vector out; + for (const auto& p : owner.params) + out.push_back(p.name); + if (owner.find_option("Multiple")) + out.push_back("pass_index"); + return out; + } + // Mirrors CONDITION_OPTIONS in Main.cpp. const std::set CONDITION_OPTIONS = { "SetupCondition", "RenderCondition", "Optional" }; @@ -119,30 +195,45 @@ namespace if (parsed.tables.find(t.owner)) { if (!find_table_field(parsed, t.owner, t.text)) - diagnostics().error(opt, std::format("[{}] on '{}': struct '{}' has no field '{}'", - opt.name, owner.name, t.owner, t.text)); + { + std::vector fields; + table_field_names(parsed, t.owner, fields); + unknown_name(t.text_loc, std::format("[{}] on '{}': struct '{}' has no field '{}'", + opt.name, owner.name, t.owner, t.text), t.text, fields); + } } else if (const Enum* e = parsed.enums.find(t.owner)) { bool found = std::any_of(e->values.begin(), e->values.end(), [&](const EnumValue& v) { return v.name == t.text; }); if (!found) - diagnostics().error(opt, std::format("[{}] on '{}': enum '{}' has no value '{}'", - opt.name, owner.name, t.owner, t.text)); + { + std::vector values; + for (const auto& v : e->values) + values.push_back(v.name); + unknown_name(t.text_loc, std::format("[{}] on '{}': enum '{}' has no value '{}'", + opt.name, owner.name, t.owner, t.text), t.text, values); + } } else if (!KNOWN_CPP_SCOPES.count(t.owner)) { - diagnostics().error(opt, std::format("[{}] on '{}': '{}::{}' names no struct, enum or known C++ scope", - opt.name, owner.name, t.owner, t.text)); + std::vector scopes; + for (const auto& table : parsed.tables) + scopes.push_back(table.name); + for (const auto& e : parsed.enums) + scopes.push_back(e.name); + unknown_name(t.owner_loc, std::format("[{}] on '{}': '{}::{}' names no struct, enum or known C++ scope", + opt.name, owner.name, t.owner, t.text), t.owner, scopes); } break; case ExprTerm::Member: if (t.owner != "data") - diagnostics().error(opt, std::format("[{}] on '{}': '{}.{}' -- only 'data.' is available in a condition", + diagnostics().error(t.owner_loc, std::format("[{}] on '{}': '{}.{}' -- only 'data.' is available in a condition", opt.name, owner.name, t.owner, t.text)); else if (!find_param(owner.params, t.text) && !(t.text == "pass_index" && owner.find_option("Multiple"))) // implicit, see pass.jinja - diagnostics().error(opt, std::format("[{}] on '{}': no field '{}'", opt.name, owner.name, t.text)); + unknown_name(t.text_loc, std::format("[{}] on '{}': no field '{}'", opt.name, owner.name, t.text), + t.text, param_names(owner)); break; case ExprTerm::Function: @@ -150,8 +241,8 @@ namespace { std::string field = t.text.substr(7, t.text.size() - 8); if (!find_param(owner.params, field)) - diagnostics().error(opt, std::format("[{}] on '{}': exists({}) names no field of this pass", - opt.name, owner.name, field)); + unknown_name(t.text_loc, std::format("[{}] on '{}': exists({}) names no field of this pass", + opt.name, owner.name, field), field, param_names(owner)); } break; @@ -247,13 +338,38 @@ namespace } } + void check_shader_path(const Shader& s, const std::string& owner_name) + { + if (!s.path_quoted) + { + if (s.path_literal != "none" && s.path_literal != "null") + diagnostics().error(s.path_loc, std::format("{}.{}: shader must be a quoted path such as \"dir/file.hlsl\" " + "(bare words are only for `none` / `null`)", owner_name, s.name)); + return; + } + + if (!s.path_literal.ends_with(".hlsl")) + { + diagnostics().error(s.path_loc, std::format("{}.{}: shader path \"{}\" must end with .hlsl", owner_name, s.name, s.path_literal)); + return; + } + + std::filesystem::path shaders = shaders_root(s.path_loc.file); + if (!shaders.empty() && !std::filesystem::exists(shaders / s.path_literal)) + diagnostics().error(s.path_loc, std::format("{}.{}: no shader file \"{}\" in {}", owner_name, s.name, + s.path_literal, shaders.lexically_normal().string())); + } + template void check_pso(const T& pso, const std::string& kind) { check_options(pso, kind, pso.name); for (const auto& s : pso.shaders) + { check_options(s, "shader", pso.name + "." + s.name); + check_shader_path(s, pso.name); + } for (const auto& d : pso.defines) check_options(d, "define", pso.name + "." + d.name); @@ -274,6 +390,31 @@ namespace } } +std::filesystem::path shaders_root(const std::string& sig_file) +{ + std::error_code ec; + for (auto p = std::filesystem::absolute(sig_file, ec).parent_path(); !p.empty() && p != p.root_path(); p = p.parent_path()) + if (std::filesystem::is_directory(p / "workdir" / "shaders", ec)) + return p / "workdir" / "shaders"; + return {}; +} + +const std::set& known_options(const std::string& kind) +{ + static const std::set none; + auto it = KNOWN_OPTIONS.find(kind); + return it != KNOWN_OPTIONS.end() ? it->second : none; +} + +std::vector option_kinds(const std::string& option_name) +{ + std::vector out; + for (const auto& [kind, names] : KNOWN_OPTIONS) + if (names.count(option_name)) + out.push_back(kind); + return out; +} + void validate(Parsed& parsed) { check_duplicates(parsed.tables, "struct"); @@ -362,6 +503,10 @@ void validate(Parsed& parsed) check_view_fields(parsed, pass); } + std::vector pass_names; + for (const auto& pass : parsed.passes) + pass_names.push_back(pass.name); + for (const auto& pipeline : parsed.pipelines) { check_duplicates(pipeline.entries, "pipeline entry"); @@ -369,7 +514,8 @@ void validate(Parsed& parsed) { check_options(entry, "pipeline entry", pipeline.name + "." + entry.name); if (!parsed.passes.find(entry.name)) - diagnostics().error(entry, std::format("Pipeline '{}' names unknown PassNode '{}'", pipeline.name, entry.name)); + unknown_name(name_loc_of(entry), std::format("Pipeline '{}' names unknown PassNode '{}'", pipeline.name, entry.name), + entry.name, pass_names); } } } diff --git a/sources/SIGParser/Validate.h b/sources/SIGParser/Validate.h index 7e53f5056..7a1a69a77 100644 --- a/sources/SIGParser/Validate.h +++ b/sources/SIGParser/Validate.h @@ -4,3 +4,13 @@ // Semantic checks over the merged model. Reports into diagnostics(); the // caller decides whether to generate. void validate(Parsed& parsed); + +// The option names validate() accepts on a declaration kind ("PassNode", +// "PassNode field", "struct", ...); empty for an unknown kind. +const std::set& known_options(const std::string& kind); + +// Every declaration kind that accepts `option_name`. +std::vector option_kinds(const std::string& option_name); + +// workdir/shaders of the checkout a .sig file belongs to; empty if not found. +std::filesystem::path shaders_root(const std::string& sig_file); diff --git a/sources/SIGParser/editor/gen_vs_extension.py b/sources/SIGParser/editor/gen_vs_extension.py index 8d28caebe..0b5763ba2 100644 --- a/sources/SIGParser/editor/gen_vs_extension.py +++ b/sources/SIGParser/editor/gen_vs_extension.py @@ -114,8 +114,15 @@ ("support.type.shader-stage.sig", "preprocessor keyword"), ("variable.parameter.sig", "local name"), ("punctuation.definition.attribute, punctuation.section.embedded", "operator"), + # The colour VS gives #define macros; registered by the C++ language service. + ("constant.other.format.sig", "cppMacro"), ] +# DXGI format names (R16G16B16A16_FLOAT, D32_FLOAT_S8X24_UINT, BC7_UNORM_SRGB): +# channel/size groups followed by one or more _SUFFIX parts ending in a type. +FORMAT_REGEX = (r"\b(?:(?:[RGBAXDSE][0-9]+)+|BC[0-9]+H?)(?:_[A-Z0-9]+)*" + r"_(?:FLOAT|UNORM|SNORM|UINT|SINT|TYPELESS|SRGB|SHAREDEXP|UF16|SF16)\b") + DECL_KEYWORD_SCOPE = "storage.type.sig" OTHER_KEYWORD_SCOPE = "keyword.other.sig" OPERATOR_SCOPE = "keyword.operator.sig" @@ -460,7 +467,8 @@ def build_grammar(rules, a): "match": r"\b(?:" + scalars + r")(?:[1-4](?:x[1-4])?)?\b"} repo["builtin_keyword_type"] = {"name": "storage.type.primitive.sig", "match": words_regex(BUILTIN_KEYWORD_TYPES)} repo["builtin_resource"] = {"name": "support.type.resource.sig", "match": words_regex(BUILTIN_RESOURCES)} - kw = ["builtin_scalar", "builtin_keyword_type", "builtin_resource"] + kw + repo["format"] = {"name": "constant.other.format.sig", "match": FORMAT_REGEX} + kw = ["format", "builtin_scalar", "builtin_keyword_type", "builtin_resource"] + kw repo["kw_decl"] = {"name": DECL_KEYWORD_SCOPE, "match": words_regex(a["decl"])} repo["kw_other"] = {"name": OTHER_KEYWORD_SCOPE, "match": words_regex(a["other"])} @@ -480,6 +488,11 @@ def build_grammar(rules, a): "patterns": [ {"include": "#comment"}, {"include": "#option_values"}, + # [rename = HIZ_OCCLUSION] names the HLSL #define a `define` becomes. + {"match": r"\b(rename)\s*(=)\s*(" + ident + ")", + "captures": {"1": {"name": "entity.other.attribute-name.sig"}, + "2": {"name": "keyword.operator.sig"}, + "3": {"name": "constant.other.format.sig"}}}, {"match": r"(?<=" + re_escape(osb) + r"|,)\s*(" + ident + ")", "captures": {"1": {"name": "entity.other.attribute-name.sig"}}}, {"include": "#values"}, diff --git a/sources/SIGParser/sigs/BlueNoise.sig b/sources/SIGParser/sigs/BlueNoise.sig index 454528c23..3bc2fc166 100644 --- a/sources/SIGParser/sigs/BlueNoise.sig +++ b/sources/SIGParser/sigs/BlueNoise.sig @@ -16,7 +16,7 @@ ComputePSO BlueNoise [EntryPoint = CS] [Enable16bits] - compute = postprocess/blue_noise; + compute = "postprocess/blue_noise.hlsl"; } [Compute] diff --git a/sources/SIGParser/sigs/DenoiserShadow.sig b/sources/SIGParser/sigs/DenoiserShadow.sig index be85e61bf..de243d4d5 100644 --- a/sources/SIGParser/sigs/DenoiserShadow.sig +++ b/sources/SIGParser/sigs/DenoiserShadow.sig @@ -13,7 +13,7 @@ ComputePSO DenoiserShadow_Prepare root = DefaultLayout; [EntryPoint = main] - compute = denoiser/prepare_shadow_mask_d3d12; + compute = "denoiser/prepare_shadow_mask_d3d12.hlsl"; } @@ -53,7 +53,7 @@ ComputePSO DenoiserShadow_TileClassification root = DefaultLayout; [EntryPoint = main] - compute = denoiser/tile_classification_d3d12; + compute = "denoiser/tile_classification_d3d12.hlsl"; } @@ -93,7 +93,7 @@ ComputePSO DenoiserShadow_Filter [EntryPoint = main] [Enable16bits] - compute = denoiser/filter_soft_shadows_pass_d3d12; + compute = "denoiser/filter_soft_shadows_pass_d3d12.hlsl"; [CS] define Pass = {0,1,2}; diff --git a/sources/SIGParser/sigs/FSR.sig b/sources/SIGParser/sigs/FSR.sig index 4aa80b134..39ed629f4 100644 --- a/sources/SIGParser/sigs/FSR.sig +++ b/sources/SIGParser/sigs/FSR.sig @@ -24,7 +24,7 @@ ComputePSO FSR root = DefaultLayout; [EntryPoint = CS] - compute = postprocess/fsr; + compute = "postprocess/fsr.hlsl"; } @@ -35,7 +35,7 @@ ComputePSO RCAS root = DefaultLayout; [EntryPoint = CS] - compute = postprocess/fsr; + compute = "postprocess/fsr.hlsl"; [rename = RCAS] diff --git a/sources/SIGParser/sigs/MipMapping.sig b/sources/SIGParser/sigs/MipMapping.sig index f9fcefe84..d93ca20f3 100644 --- a/sources/SIGParser/sigs/MipMapping.sig +++ b/sources/SIGParser/sigs/MipMapping.sig @@ -44,7 +44,7 @@ ComputePSO DownsampleDepth root = DefaultLayout; [EntryPoint = CS] - compute = occlusion/downsample_depth; + compute = "occlusion/downsample_depth.hlsl"; } @@ -62,7 +62,7 @@ ComputePSO DownsampleDepthMip root = DefaultLayout; [EntryPoint = CS] - compute = occlusion/downsample_depth_mip; + compute = "occlusion/downsample_depth_mip.hlsl"; } @@ -72,7 +72,7 @@ ComputePSO MipMapping root = DefaultLayout; [EntryPoint = CS] - compute = postprocess/generate_mips; + compute = "postprocess/generate_mips.hlsl"; [rename = NON_POWER_OF_TWO] [CS] @@ -95,10 +95,10 @@ GraphicsPSO RenderToDS root = DefaultLayout; [EntryPoint = VS] - vertex = gbuffer/depth_render; + vertex = "gbuffer/depth_render.hlsl"; [EntryPoint = PS] - pixel = gbuffer/depth_render; + pixel = "gbuffer/depth_render.hlsl"; ds = D32_FLOAT; @@ -112,10 +112,10 @@ GraphicsPSO QualityColor root = DefaultLayout; [EntryPoint = VS] - vertex = gbuffer/gbuffer_quality; + vertex = "gbuffer/gbuffer_quality.hlsl"; [EntryPoint = PS] - pixel = gbuffer/gbuffer_quality; + pixel = "gbuffer/gbuffer_quality.hlsl"; rtv = { R8G8_UNORM }; depth_write = false; @@ -128,10 +128,10 @@ GraphicsPSO QualityToStencil root = DefaultLayout; [EntryPoint = VS] - vertex = gbuffer/gbuffer_quality; + vertex = "gbuffer/gbuffer_quality.hlsl"; [EntryPoint = PS_STENCIL] - pixel = gbuffer/gbuffer_quality; + pixel = "gbuffer/gbuffer_quality.hlsl"; enable_stencil = true; enable_depth = false; @@ -153,10 +153,10 @@ GraphicsPSO QualityToStencilREfl root = DefaultLayout; [EntryPoint = VS] - vertex = gbuffer/gbuffer_quality; + vertex = "gbuffer/gbuffer_quality.hlsl"; [EntryPoint = PS_STENCIL] - pixel = gbuffer/gbuffer_quality; + pixel = "gbuffer/gbuffer_quality.hlsl"; enable_stencil = true; enable_depth = false; @@ -179,10 +179,10 @@ GraphicsPSO CopyTexture root = DefaultLayout; [EntryPoint = VS] - vertex = postprocess/copy_texture; + vertex = "postprocess/copy_texture.hlsl"; [EntryPoint = PS] - pixel = postprocess/copy_texture; + pixel = "postprocess/copy_texture.hlsl"; enable_depth = false; diff --git a/sources/SIGParser/sigs/SS_Shadow.sig b/sources/SIGParser/sigs/SS_Shadow.sig index d6c4bd263..90d77782c 100644 --- a/sources/SIGParser/sigs/SS_Shadow.sig +++ b/sources/SIGParser/sigs/SS_Shadow.sig @@ -83,7 +83,7 @@ ComputePSO SS_Shadow root = DefaultLayout; [EntryPoint = CS] - compute = denoiser/ss_shadow; + compute = "denoiser/ss_shadow.hlsl"; } diff --git a/sources/SIGParser/sigs/UpscalingDLSSRR.sig b/sources/SIGParser/sigs/UpscalingDLSSRR.sig index 203f67a74..9c44c8d5b 100644 --- a/sources/SIGParser/sigs/UpscalingDLSSRR.sig +++ b/sources/SIGParser/sigs/UpscalingDLSSRR.sig @@ -41,7 +41,7 @@ ComputePSO NormalRoughnessRepack root = DefaultLayout; [EntryPoint = CS] - compute = gbuffer/normal_roughness_repack; + compute = "gbuffer/normal_roughness_repack.hlsl"; } # Pure GBuffer-derived material properties feeding UpscalingDLSSRR's evaluate() diff --git a/sources/SIGParser/sigs/WorkGraph.sig b/sources/SIGParser/sigs/WorkGraph.sig index d52aaec82..f14e2656f 100644 --- a/sources/SIGParser/sigs/WorkGraph.sig +++ b/sources/SIGParser/sigs/WorkGraph.sig @@ -58,7 +58,7 @@ struct WorkGR_Shadows_NodeEmulation { root = DefaultLayout; - shader = dev/workgraph_test; + shader = "dev/workgraph_test.hlsl"; Node ClassifyPixels_Node { diff --git a/sources/SIGParser/sigs/brdf.sig b/sources/SIGParser/sigs/brdf.sig index 04cd8cc00..820e4d813 100644 --- a/sources/SIGParser/sigs/brdf.sig +++ b/sources/SIGParser/sigs/brdf.sig @@ -11,5 +11,5 @@ ComputePSO BRDF root = DefaultLayout; [EntryPoint = CS] - compute = common/brdf; + compute = "common/brdf.hlsl"; } \ No newline at end of file diff --git a/sources/SIGParser/sigs/ddgi.sig b/sources/SIGParser/sigs/ddgi.sig index 9d36a5213..53a732d60 100644 --- a/sources/SIGParser/sigs/ddgi.sig +++ b/sources/SIGParser/sigs/ddgi.sig @@ -402,7 +402,7 @@ ComputePSO DDGIProbeSelect root = DefaultLayout; [EntryPoint = CS] - compute = ddgi/ddgi_probe_select; + compute = "ddgi/ddgi_probe_select.hlsl"; } [Bind = DefaultLayout::Instance0] @@ -477,7 +477,7 @@ ComputePSO DDGIProbeConvolve root = DefaultLayout; [EntryPoint = CS] - compute = ddgi/ddgi_probe_convolve; + compute = "ddgi/ddgi_probe_convolve.hlsl"; } # Budgeted probe selection -- v1 is a naive round-robin over @@ -616,7 +616,7 @@ ComputePSO DDGIProbeResidencyMark root = DefaultLayout; [EntryPoint = CS] - compute = ddgi/ddgi_probe_residency_mark; + compute = "ddgi/ddgi_probe_residency_mark.hlsl"; } # Marks which probes (this cascade's own DDGI_ProbeResidency slice) are @@ -810,7 +810,7 @@ ComputePSO DDGIDebug root = DefaultLayout; [EntryPoint = CS] - compute = ddgi/ddgi_debug; + compute = "ddgi/ddgi_debug.hlsl"; } # Debug-only screen-space probe visualization (see DDGISelectors::show_probes @@ -870,7 +870,7 @@ ComputePSO DDGIIndirectDebug root = DefaultLayout; [EntryPoint = CS] - compute = ddgi/ddgi_indirect_debug; + compute = "ddgi/ddgi_indirect_debug.hlsl"; } # Full-screen debug view (selected via FrameGraph::DebugMode::DDGIIndirect, diff --git a/sources/SIGParser/sigs/font_render.sig b/sources/SIGParser/sigs/font_render.sig index 4b085f62b..3f559712d 100644 --- a/sources/SIGParser/sigs/font_render.sig +++ b/sources/SIGParser/sigs/font_render.sig @@ -31,13 +31,13 @@ GraphicsPSO FontRender root = DefaultLayout; [EntryPoint = VS] - vertex = font/vs_simple; + vertex = "font/vs_simple.hlsl"; [EntryPoint = PS] - pixel = font/ps_simple; + pixel = "font/ps_simple.hlsl"; [EntryPoint = GS] - geometry = font/gs_simple; + geometry = "font/gs_simple.hlsl"; topology = POINT; diff --git a/sources/SIGParser/sigs/material_preview.sig b/sources/SIGParser/sigs/material_preview.sig index 7ee103cd6..79dc01e10 100644 --- a/sources/SIGParser/sigs/material_preview.sig +++ b/sources/SIGParser/sigs/material_preview.sig @@ -27,7 +27,7 @@ ComputePSO MaterialPreview root = DefaultLayout; [EntryPoint = CS] - compute = materials/material_preview; + compute = "materials/material_preview.hlsl"; } # 3D node preview: draws the real material_tester mesh (a direct, non-indirect @@ -49,13 +49,13 @@ GraphicsPSO MaterialPreview3D root = DefaultLayout; [EntryPoint = VS] - mesh = gbuffer/mesh_shader; + mesh = "gbuffer/mesh_shader.hlsl"; [EntryPoint = AS] - amplification = gbuffer/mesh_shader; + amplification = "gbuffer/mesh_shader.hlsl"; [EntryPoint = PS_PREVIEW] - pixel = materials/material_preview_3d_stub; + pixel = "materials/material_preview_3d_stub.hlsl"; ds = D32_FLOAT; cull = Back; diff --git a/sources/SIGParser/sigs/meshrender.sig b/sources/SIGParser/sigs/meshrender.sig index d9dccd891..2ed20144a 100644 --- a/sources/SIGParser/sigs/meshrender.sig +++ b/sources/SIGParser/sigs/meshrender.sig @@ -244,7 +244,7 @@ ComputePSO GatherPipeline root = DefaultLayout; [EntryPoint = CS] - compute = gbuffer/gather_pipeline; + compute = "gbuffer/gather_pipeline.hlsl"; [rename = CHECK_FRUSTUM] [CS, nullable] @@ -258,7 +258,7 @@ ComputePSO GatherBoxes root = DefaultLayout; [EntryPoint = CS_boxes] - compute = gbuffer/gather_pipeline; + compute = "gbuffer/gather_pipeline.hlsl"; [rename = CHECK_FRUSTUM] [CS, nullable] @@ -270,7 +270,7 @@ ComputePSO InitDispatch root = DefaultLayout; [EntryPoint = CS] - compute = occlusion/occluder_cs_dispatch_init; + compute = "occlusion/occluder_cs_dispatch_init.hlsl"; [rename = CHECK_FRUSTUM] [CS, nullable] @@ -283,7 +283,7 @@ ComputePSO GatherMeshes root = DefaultLayout; [EntryPoint = CS_meshes_from_boxes] - compute = gbuffer/gather_pipeline; + compute = "gbuffer/gather_pipeline.hlsl"; [rename = INVISIBLE] [CS, nullable] @@ -303,10 +303,10 @@ GraphicsPSO RenderBoxes root = DefaultLayout; [EntryPoint = VS] - vertex = occlusion/occluder; + vertex = "occlusion/occluder.hlsl"; [EntryPoint = PS] - pixel = occlusion/occluder; + pixel = "occlusion/occluder.hlsl"; conservative = true; depth_write = false; diff --git a/sources/SIGParser/sigs/nrd_sig_test.sig b/sources/SIGParser/sigs/nrd_sig_test.sig index 3109cf727..b6d8acb7f 100644 --- a/sources/SIGParser/sigs/nrd_sig_test.sig +++ b/sources/SIGParser/sigs/nrd_sig_test.sig @@ -30,7 +30,7 @@ ComputePSO NRD_Clear_Test root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_clear; + compute = "nrd/sig_clear.hlsl"; } # Item 7 (see [[project-nrd-integration]]): the rest of NRD's SIGMA_SHADOW + @@ -105,7 +105,7 @@ ComputePSO NRD_SIGMA_ClassifyTiles { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_classifytiles; + compute = "nrd/sig_sigma_classifytiles.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -120,7 +120,7 @@ ComputePSO NRD_SIGMA_SmoothTiles { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_smoothtiles; + compute = "nrd/sig_sigma_smoothtiles.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -138,7 +138,7 @@ ComputePSO NRD_SIGMA_Copy { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_copy; + compute = "nrd/sig_sigma_copy.hlsl"; } # FIRST_PASS=1: no gIn_Shadow_Translucency (only compiled in when @@ -159,7 +159,7 @@ ComputePSO NRD_SIGMA_BlurFirstPass1 { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_blur_fp1; + compute = "nrd/sig_sigma_blur_fp1.hlsl"; } # FIRST_PASS=0: gIn_Shadow_Translucency IS compiled in. @@ -180,7 +180,7 @@ ComputePSO NRD_SIGMA_BlurFirstPass0 { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_blur_fp0; + compute = "nrd/sig_sigma_blur_fp0.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -202,7 +202,7 @@ ComputePSO NRD_SIGMA_TemporalStabilization { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_temporalstabilization; + compute = "nrd/sig_sigma_temporalstabilization.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -217,7 +217,7 @@ ComputePSO NRD_SIGMA_SplitScreen { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_sigma_splitscreen; + compute = "nrd/sig_sigma_splitscreen.hlsl"; } # Item 8 (see [[project-nrd-integration]]): REBLUR_SHARED_CONSTANTS @@ -324,7 +324,7 @@ ComputePSO NRD_REBLUR_ClassifyTiles { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_classifytiles; + compute = "nrd/sig_reblur_classifytiles.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -342,7 +342,7 @@ ComputePSO NRD_REBLUR_HitDistReconstruction { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_hitdistreconstruction; + compute = "nrd/sig_reblur_hitdistreconstruction.hlsl"; } # MODE_5X5=1 permutation -- same resource layout as MODE_5X5=0 (the #if only @@ -352,7 +352,7 @@ ComputePSO NRD_REBLUR_HitDistReconstruction5x5 { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_hitdistreconstruction_5x5; + compute = "nrd/sig_reblur_hitdistreconstruction_5x5.hlsl"; } # REBLUR_SPECULAR's permutation of the same kernel (see @@ -374,14 +374,14 @@ ComputePSO NRD_REBLUR_HitDistReconstruction_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_hitdistreconstruction_specular; + compute = "nrd/sig_reblur_hitdistreconstruction_specular.hlsl"; } ComputePSO NRD_REBLUR_HitDistReconstruction5x5_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_hitdistreconstruction_5x5_specular; + compute = "nrd/sig_reblur_hitdistreconstruction_5x5_specular.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -399,7 +399,7 @@ ComputePSO NRD_REBLUR_PrePass { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_prepass; + compute = "nrd/sig_reblur_prepass.hlsl"; } # REBLUR_SPECULAR's permutation -- one extra output (gOut_SpecHitDistForTracking, @@ -421,7 +421,7 @@ ComputePSO NRD_REBLUR_PrePass_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_prepass_specular; + compute = "nrd/sig_reblur_prepass_specular.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -450,7 +450,7 @@ ComputePSO NRD_REBLUR_TemporalAccumulation { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_temporalaccumulation; + compute = "nrd/sig_reblur_temporalaccumulation.hlsl"; } # REBLUR_SPECULAR's permutation -- per @@ -489,7 +489,7 @@ ComputePSO NRD_REBLUR_TemporalAccumulation_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_temporalaccumulation_specular; + compute = "nrd/sig_reblur_temporalaccumulation_specular.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -510,7 +510,7 @@ ComputePSO NRD_REBLUR_HistoryFix { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_historyfix; + compute = "nrd/sig_reblur_historyfix.hlsl"; } # REBLUR_SPECULAR's permutation -- one extra input (gIn_SpecHitDistForTracking, @@ -535,7 +535,7 @@ ComputePSO NRD_REBLUR_HistoryFix_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_historyfix_specular; + compute = "nrd/sig_reblur_historyfix_specular.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -555,7 +555,7 @@ ComputePSO NRD_REBLUR_Blur { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_blur; + compute = "nrd/sig_reblur_blur.hlsl"; } # REBLUR_SPECULAR's permutation -- same resource count as diffuse (5 in + 2 @@ -578,7 +578,7 @@ ComputePSO NRD_REBLUR_Blur_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_blur_specular; + compute = "nrd/sig_reblur_blur_specular.hlsl"; } # TEMPORAL_STABILIZATION=0: PostBlur also emits gOut_InternalData/gOut_DiffCopy @@ -603,7 +603,7 @@ ComputePSO NRD_REBLUR_PostBlurTS0 { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_postblur_ts0; + compute = "nrd/sig_reblur_postblur_ts0.hlsl"; } # REBLUR_SPECULAR's permutation -- same resource count as diffuse (5 in + 4 @@ -628,7 +628,7 @@ ComputePSO NRD_REBLUR_PostBlurTS0_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_postblur_ts0_specular; + compute = "nrd/sig_reblur_postblur_ts0_specular.hlsl"; } # TEMPORAL_STABILIZATION=1: the TemporalStabilization pass runs afterward and @@ -650,7 +650,7 @@ ComputePSO NRD_REBLUR_PostBlurTS1 { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_postblur_ts1; + compute = "nrd/sig_reblur_postblur_ts1.hlsl"; } # REBLUR_SPECULAR's permutation -- same resource count as diffuse (5 in + 2 @@ -673,7 +673,7 @@ ComputePSO NRD_REBLUR_PostBlurTS1_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_postblur_ts1_specular; + compute = "nrd/sig_reblur_postblur_ts1_specular.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -697,7 +697,7 @@ ComputePSO NRD_REBLUR_TemporalStabilization { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_temporalstabilization; + compute = "nrd/sig_reblur_temporalstabilization.hlsl"; } # REBLUR_SPECULAR's permutation -- per @@ -726,7 +726,7 @@ ComputePSO NRD_REBLUR_TemporalStabilization_Specular { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_temporalstabilization_specular; + compute = "nrd/sig_reblur_temporalstabilization_specular.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -742,7 +742,7 @@ ComputePSO NRD_REBLUR_SplitScreen { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_splitscreen; + compute = "nrd/sig_reblur_splitscreen.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -765,7 +765,7 @@ ComputePSO NRD_REBLUR_Validation { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_reblur_validation; + compute = "nrd/sig_reblur_validation.hlsl"; } # Clear.cs.hlsl|FLOAT=0 -- the uint4 permutation of the kernel already ported @@ -781,7 +781,7 @@ ComputePSO NRD_Clear_UInt4 { root = DefaultLayout; [EntryPoint = main] - compute = nrd/sig_clear_uint4; + compute = "nrd/sig_clear_uint4.hlsl"; } # Front-end packing for NRD REBLUR_DIFFUSE (see [[project-nrd-integration]]): @@ -862,7 +862,7 @@ ComputePSO NRD_GBufferPack { root = DefaultLayout; [EntryPoint = CS] - compute = nrd/gbuffer_pack; + compute = "nrd/gbuffer_pack.hlsl"; } # Which raw signal feeds NRD REBLUR_DIFFUSE, set by main.cpp's Indirect Src @@ -946,7 +946,7 @@ ComputePSO NRD_UnpackDebug { root = DefaultLayout; [EntryPoint = CS] - compute = nrd/unpack_debug; + compute = "nrd/unpack_debug.hlsl"; } # Real per-frame REBLUR_DIFFUSE execution (see [[project-nrd-integration]]). @@ -1044,7 +1044,7 @@ ComputePSO NRD_IndirectCombine { root = DefaultLayout; [EntryPoint = CS] - compute = nrd/nrd_indirect_combine; + compute = "nrd/nrd_indirect_combine.hlsl"; } [Static] @@ -1088,7 +1088,7 @@ ComputePSO NRD_ShadowCombine { root = DefaultLayout; [EntryPoint = CS] - compute = nrd/nrd_shadow_combine; + compute = "nrd/nrd_shadow_combine.hlsl"; } [Static] diff --git a/sources/SIGParser/sigs/pssm.sig b/sources/SIGParser/sigs/pssm.sig index 1c0b1d75b..5410d0186 100644 --- a/sources/SIGParser/sigs/pssm.sig +++ b/sources/SIGParser/sigs/pssm.sig @@ -94,10 +94,10 @@ GraphicsPSO PSSMMask root = DefaultLayout; [EntryPoint = VS] - vertex = shadows/pssm/pssm; + vertex = "shadows/pssm/pssm.hlsl"; [EntryPoint = PS] - pixel = shadows/pssm/pssm; + pixel = "shadows/pssm/pssm.hlsl"; rtv = { R8_UNORM }; } @@ -107,10 +107,10 @@ GraphicsPSO PSSMApply root = DefaultLayout; [EntryPoint = VS] - vertex = shadows/pssm/pssm; + vertex = "shadows/pssm/pssm.hlsl"; [EntryPoint = PS_RESULT] - pixel = shadows/pssm/pssm; + pixel = "shadows/pssm/pssm.hlsl"; rtv = { R16G16B16A16_FLOAT }; } @@ -120,7 +120,7 @@ ComputePSO PSSMApplyCompute root = DefaultLayout; [EntryPoint = CS_RESULT] - compute = shadows/pssm/pssm; + compute = "shadows/pssm/pssm.hlsl"; } @@ -129,7 +129,7 @@ ComputePSO GBufferDownsample root = DefaultLayout; [EntryPoint = CS] - compute = postprocess/downsample; + compute = "postprocess/downsample.hlsl"; } diff --git a/sources/SIGParser/sigs/raytracing.sig b/sources/SIGParser/sigs/raytracing.sig index 6efd306c2..535488aea 100644 --- a/sources/SIGParser/sigs/raytracing.sig +++ b/sources/SIGParser/sigs/raytracing.sig @@ -100,7 +100,7 @@ ComputePSO DispatchRaysArgsBuild root = DefaultLayout; [EntryPoint = CS] - compute = rtx/dispatch_rays_args_build; + compute = "rtx/dispatch_rays_args_build.hlsl"; } [Bind = DefaultLayout::Instance2] @@ -305,7 +305,7 @@ RaytracePSO MainRTX RaytraceRaygen Shadow { [EntryPoint = ShadowRaygenShader] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } # Independent RTX-only reference: 1 ray per pixel, genuinely noisy soft @@ -316,7 +316,7 @@ RaytraceRaygen Shadow RaytraceRaygen ShadowRTX { [EntryPoint = MyRaygenShaderShadowRTXOnly] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } @@ -326,7 +326,7 @@ RaytraceRaygen ShadowRTX RaytraceRaygen ReflectionRTX { [EntryPoint = MyRaygenShaderReflectionRTXOnly] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } # Half-res sibling for PassNode ReflectionRTXHalf (voxel.sig) -- same trace @@ -336,7 +336,7 @@ RaytraceRaygen ReflectionRTX RaytraceRaygen ReflectionRTXHalf { [EntryPoint = MyRaygenShaderReflectionRTXHalfRes] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } # Voxel-cone-traced reflection signal, selectable against ReflectionRTX as @@ -346,7 +346,7 @@ RaytraceRaygen ReflectionRTXHalf RaytraceRaygen Reflection { [EntryPoint = MyRaygenShaderReflection] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } # RTX-only reference: 1 ray per pixel, genuinely noisy diffuse @@ -357,7 +357,7 @@ RaytraceRaygen Reflection RaytraceRaygen IndirectRTX { [EntryPoint = MyRaygenShaderIndirectRTXOnly] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } # Half-res sibling for PassNode IndirectRTXHalf (voxel.sig) -- same trace @@ -367,7 +367,7 @@ RaytraceRaygen IndirectRTX RaytraceRaygen IndirectRTXHalf { [EntryPoint = MyRaygenShaderIndirectRTXHalfRes] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } # Voxel-cone-traced indirect-GI signal, selectable against IndirectRTX as @@ -377,14 +377,14 @@ RaytraceRaygen IndirectRTXHalf RaytraceRaygen Indirect { [EntryPoint = MyRaygenShader] - raygen = rtx/raytracing; + raygen = "rtx/raytracing.hlsl"; } [Bind = MainRTX] RaytraceRaygen ColorRTX { [EntryPoint = ColorRTXRaygenShader] - raygen = rtx/raytracing_debug; + raygen = "rtx/raytracing_debug.hlsl"; } # DDGI probe-volume trace raygen (ddgi.sig, see [[project-ddgi]] planning @@ -396,17 +396,17 @@ RaytraceRaygen ColorRTX RaytraceRaygen DDGIProbeTrace { [EntryPoint = DDGIProbeTraceRaygenShader] - raygen = ddgi/ddgi_probe_trace; + raygen = "ddgi/ddgi_probe_trace.hlsl"; } [Bind = MainRTX] RaytracePass ShadowPass { [EntryPoint = ShadowMissShader] - miss = rtx/raytracing; + miss = "rtx/raytracing.hlsl"; [EntryPoint = ShadowClosestHitShader] - closest_hit = rtx/raytracing; + closest_hit = "rtx/raytracing.hlsl"; payload = ShadowPayload; } @@ -415,7 +415,7 @@ RaytracePass ShadowPass RaytracePass ColorPass { [EntryPoint = MyMissShader] - miss = rtx/raytracing; + miss = "rtx/raytracing.hlsl"; [EntryPoint = MyClosestHitShader] closest_hit = none; @@ -442,7 +442,7 @@ RaytracePass ColorPass RaytracePass ColorShadowPass { [EntryPoint = ColorShadowMissShader] - miss = rtx/raytracing; + miss = "rtx/raytracing.hlsl"; [EntryPoint = ColorShadowClosestHitShader] closest_hit = none; @@ -503,7 +503,7 @@ ComputePSO RTXShadowReferenceCompute root = DefaultLayout; [EntryPoint = CS_REFERENCE] - compute = rtx/rtx_shadow_reference; + compute = "rtx/rtx_shadow_reference.hlsl"; } [Static] diff --git a/sources/SIGParser/sigs/scene.sig b/sources/SIGParser/sigs/scene.sig index d9c335909..bb534f282 100644 --- a/sources/SIGParser/sigs/scene.sig +++ b/sources/SIGParser/sigs/scene.sig @@ -32,10 +32,10 @@ GraphicsPSO GBufferDraw root = DefaultLayout; [EntryPoint = VS] - mesh = gbuffer/mesh_shader; + mesh = "gbuffer/mesh_shader.hlsl"; [EntryPoint = AS] - amplification = gbuffer/mesh_shader; + amplification = "gbuffer/mesh_shader.hlsl"; # Per-meshlet Hi-Z occlusion in the AS. Off for the occlusion culler's # stage 1 (it would test against last frame's pyramid with this frame's @@ -61,10 +61,10 @@ GraphicsPSO DepthDraw pixel = null; [EntryPoint = VS] - mesh = gbuffer/mesh_shader; + mesh = "gbuffer/mesh_shader.hlsl"; [EntryPoint = AS] - amplification = gbuffer/mesh_shader; + amplification = "gbuffer/mesh_shader.hlsl"; # See GBufferDraw. [rename = HIZ_OCCLUSION] @@ -85,10 +85,10 @@ GraphicsPSO Voxelization root = DefaultLayout; [EntryPoint = VS] - mesh = voxelgi/mesh_shader_voxel; + mesh = "voxelgi/mesh_shader_voxel.hlsl"; [EntryPoint = AS] - amplification = voxelgi/mesh_shader_voxel; + amplification = "voxelgi/mesh_shader_voxel.hlsl"; [rename = VOXEL_DYNAMIC] [PS] diff --git a/sources/SIGParser/sigs/sky.sig b/sources/SIGParser/sigs/sky.sig index 711b603e0..b6039da58 100644 --- a/sources/SIGParser/sigs/sky.sig +++ b/sources/SIGParser/sigs/sky.sig @@ -67,10 +67,10 @@ GraphicsPSO Sky root = DefaultLayout; [EntryPoint = VS] - vertex = sky/sky; + vertex = "sky/sky.hlsl"; [EntryPoint = PS] - pixel = sky/sky; + pixel = "sky/sky.hlsl"; rtv = { R16G16B16A16_FLOAT }; blend = { Additive }; @@ -81,7 +81,7 @@ ComputePSO SkyCompute root = DefaultLayout; [EntryPoint = CS] - compute = sky/sky; + compute = "sky/sky.hlsl"; } @@ -90,7 +90,7 @@ ComputePSO SkyCube root = DefaultLayout; [EntryPoint = CS_Cube] - compute = sky/sky; + compute = "sky/sky.hlsl"; } ComputePSO CubemapENV @@ -98,7 +98,7 @@ ComputePSO CubemapENV root = DefaultLayout; [EntryPoint = CS] - compute = sky/cubemap_down; + compute = "sky/cubemap_down.hlsl"; } ComputePSO CubemapENVDiffuse @@ -106,7 +106,7 @@ ComputePSO CubemapENVDiffuse root = DefaultLayout; [EntryPoint = CS_Diffuse] - compute = sky/cubemap_down; + compute = "sky/cubemap_down.hlsl"; } diff --git a/sources/SIGParser/sigs/smaa.sig b/sources/SIGParser/sigs/smaa.sig index 03ae702bf..10273e297 100644 --- a/sources/SIGParser/sigs/smaa.sig +++ b/sources/SIGParser/sigs/smaa.sig @@ -39,10 +39,10 @@ GraphicsPSO EdgeDetect root = DefaultLayout; [EntryPoint = DX10_SMAAEdgeDetectionVS] - vertex = postprocess/smaa; + vertex = "postprocess/smaa.hlsl"; [EntryPoint = DX10_SMAALumaEdgeDetectionPS] - pixel = postprocess/smaa; + pixel = "postprocess/smaa.hlsl"; rtv = { R8G8_UNORM }; } @@ -52,10 +52,10 @@ GraphicsPSO BlendWeight root = DefaultLayout; [EntryPoint = DX10_SMAABlendingWeightCalculationVS] - vertex = postprocess/smaa; + vertex = "postprocess/smaa.hlsl"; [EntryPoint = DX10_SMAABlendingWeightCalculationPS] - pixel = postprocess/smaa; + pixel = "postprocess/smaa.hlsl"; rtv = { R8G8B8A8_UNORM }; } @@ -66,10 +66,10 @@ GraphicsPSO Blending root = DefaultLayout; [EntryPoint = DX10_SMAANeighborhoodBlendingVS] - vertex = postprocess/smaa; + vertex = "postprocess/smaa.hlsl"; [EntryPoint = DX10_SMAANeighborhoodBlendingPS] - pixel = postprocess/smaa; + pixel = "postprocess/smaa.hlsl"; rtv = { R16G16B16A16_FLOAT }; } @@ -79,7 +79,7 @@ ComputePSO EdgeDetectCompute root = DefaultLayout; [EntryPoint = CS_EdgeDetect] - compute = postprocess/smaa; + compute = "postprocess/smaa.hlsl"; } ComputePSO BlendWeightCompute @@ -87,7 +87,7 @@ ComputePSO BlendWeightCompute root = DefaultLayout; [EntryPoint = CS_BlendWeight] - compute = postprocess/smaa; + compute = "postprocess/smaa.hlsl"; } ComputePSO BlendingCompute @@ -95,7 +95,7 @@ ComputePSO BlendingCompute root = DefaultLayout; [EntryPoint = CS_Blending] - compute = postprocess/smaa; + compute = "postprocess/smaa.hlsl"; } diff --git a/sources/SIGParser/sigs/stenciler.sig b/sources/SIGParser/sigs/stenciler.sig index cc1942386..c37f165cc 100644 --- a/sources/SIGParser/sigs/stenciler.sig +++ b/sources/SIGParser/sigs/stenciler.sig @@ -38,13 +38,13 @@ GraphicsPSO DrawStencil root = DefaultLayout; [EntryPoint = VS] - mesh = gbuffer/mesh_shader; + mesh = "gbuffer/mesh_shader.hlsl"; [EntryPoint = AS] - amplification = gbuffer/mesh_shader; + amplification = "gbuffer/mesh_shader.hlsl"; [EntryPoint = PS] - pixel = postprocess/stencil; + pixel = "postprocess/stencil.hlsl"; ds = D32_FLOAT; cull = None; @@ -59,13 +59,13 @@ GraphicsPSO DrawSelected root = DefaultLayout; [EntryPoint = VS] - mesh = gbuffer/mesh_shader; + mesh = "gbuffer/mesh_shader.hlsl"; [EntryPoint = AS] - amplification = gbuffer/mesh_shader; + amplification = "gbuffer/mesh_shader.hlsl"; [EntryPoint = PS_RESULT] - pixel = postprocess/stencil; + pixel = "postprocess/stencil.hlsl"; @@ -84,10 +84,10 @@ GraphicsPSO DrawBox root = DefaultLayout; [EntryPoint = VS] - vertex = postprocess/triangle_stencil; + vertex = "postprocess/triangle_stencil.hlsl"; [EntryPoint = PS] - pixel = postprocess/triangle_stencil; + pixel = "postprocess/triangle_stencil.hlsl"; enable_depth = false; cull = None; @@ -103,14 +103,14 @@ GraphicsPSO DrawAxis root = DefaultLayout; [EntryPoint = VS] - mesh = gbuffer/mesh_shader; + mesh = "gbuffer/mesh_shader.hlsl"; [EntryPoint = AS] - amplification = gbuffer/mesh_shader; + amplification = "gbuffer/mesh_shader.hlsl"; [EntryPoint = PS_COLOR] - pixel = postprocess/stencil; + pixel = "postprocess/stencil.hlsl"; enable_depth = false; cull = None; @@ -124,10 +124,10 @@ GraphicsPSO DrawRing root = DefaultLayout; [EntryPoint = VS] - vertex = postprocess/ring; + vertex = "postprocess/ring.hlsl"; [EntryPoint = PS_COLOR] - pixel = postprocess/ring; + pixel = "postprocess/ring.hlsl"; enable_depth = false; cull = None; @@ -141,10 +141,10 @@ GraphicsPSO DrawRingPick root = DefaultLayout; [EntryPoint = VS] - vertex = postprocess/ring; + vertex = "postprocess/ring.hlsl"; [EntryPoint = PS] - pixel = postprocess/ring; + pixel = "postprocess/ring.hlsl"; ds = D32_FLOAT; cull = None; @@ -157,10 +157,10 @@ GraphicsPSO StencilerLast root = DefaultLayout; [EntryPoint = VS] - vertex = postprocess/contour; + vertex = "postprocess/contour.hlsl"; [EntryPoint = PS] - pixel = postprocess/contour; + pixel = "postprocess/contour.hlsl"; enable_depth = false; cull = None; diff --git a/sources/SIGParser/sigs/ui.sig b/sources/SIGParser/sigs/ui.sig index 144515987..4949a2c6c 100644 --- a/sources/SIGParser/sigs/ui.sig +++ b/sources/SIGParser/sigs/ui.sig @@ -68,10 +68,10 @@ GraphicsPSO NinePatch root = DefaultLayout; [EntryPoint = VS] - vertex = gui/ninepatch; + vertex = "gui/ninepatch.hlsl"; [EntryPoint = PS] - pixel = gui/ninepatch; + pixel = "gui/ninepatch.hlsl"; rtv = { B8G8R8A8_UNORM }; blend = { AlphaBlend }; @@ -85,10 +85,10 @@ GraphicsPSO SimpleRect root = DefaultLayout; [EntryPoint = VS] - vertex = gui/rect; + vertex = "gui/rect.hlsl"; [EntryPoint = PS_COLOR] - pixel = gui/rect; + pixel = "gui/rect.hlsl"; rtv = { B8G8R8A8_UNORM }; blend = { AlphaBlend }; @@ -100,10 +100,10 @@ GraphicsPSO CanvasBack root = DefaultLayout; [EntryPoint = VS] - vertex = gui/ninepatch; + vertex = "gui/ninepatch.hlsl"; [EntryPoint = PS] - pixel = gui/canvas; + pixel = "gui/canvas.hlsl"; enable_depth = false; cull = None; @@ -131,19 +131,19 @@ GraphicsPSO CanvasLines root = DefaultLayout; [EntryPoint = VS] - vertex = gui/flow_line; + vertex = "gui/flow_line.hlsl"; [EntryPoint = PS] - pixel = gui/flow_line; + pixel = "gui/flow_line.hlsl"; [EntryPoint = GS] - geometry = gui/flow_line; + geometry = "gui/flow_line.hlsl"; [EntryPoint = DS] - domain = gui/flow_line; + domain = "gui/flow_line.hlsl"; [EntryPoint = HS] - hull = gui/flow_line; + hull = "gui/flow_line.hlsl"; enable_depth = false; cull = None; @@ -179,7 +179,7 @@ ComputePSO FrameGraph_Debug_Texture2D root = DefaultLayout; [EntryPoint = CS] - compute = framegraph/draw_texture_2d; + compute = "framegraph/draw_texture_2d.hlsl"; } [Bind = DefaultLayout::Instance1] @@ -196,7 +196,7 @@ ComputePSO FrameGraph_Debug_Texture2DArray root = DefaultLayout; [EntryPoint = CS] - compute = framegraph/draw_texture_2d_array; + compute = "framegraph/draw_texture_2d_array.hlsl"; } @@ -214,7 +214,7 @@ ComputePSO FrameGraph_Debug_Texture3D root = DefaultLayout; [EntryPoint = CS] - compute = framegraph/draw_texture_3d; + compute = "framegraph/draw_texture_3d.hlsl"; } @@ -230,7 +230,7 @@ ComputePSO FrameGraph_Debug_TextureCube root = DefaultLayout; [EntryPoint = CS] - compute = framegraph/draw_texture_cube; + compute = "framegraph/draw_texture_cube.hlsl"; } @@ -240,7 +240,7 @@ ComputePSO FrameGraph_Debug_NotImplemented root = DefaultLayout; [EntryPoint = CS] - compute = framegraph/draw_not_implemented; + compute = "framegraph/draw_not_implemented.hlsl"; } @@ -267,7 +267,7 @@ ComputePSO StatGraph { root = DefaultLayout; [EntryPoint = CS] - compute = gui/stat_graph; + compute = "gui/stat_graph.hlsl"; } [Bind = DefaultLayout::Instance0] @@ -292,13 +292,13 @@ GraphicsPSO StatGraphLines root = DefaultLayout; [EntryPoint = VS] - vertex = gui/stat_graph_lines; + vertex = "gui/stat_graph_lines.hlsl"; [EntryPoint = GS] - geometry = gui/stat_graph_lines; + geometry = "gui/stat_graph_lines.hlsl"; [EntryPoint = PS] - pixel = gui/stat_graph_lines; + pixel = "gui/stat_graph_lines.hlsl"; rtv = { R8G8B8A8_UNORM }; blend = { AlphaBlend }; diff --git a/sources/SIGParser/sigs/voxel.sig b/sources/SIGParser/sigs/voxel.sig index 4df611b9d..ee3ccf940 100644 --- a/sources/SIGParser/sigs/voxel.sig +++ b/sources/SIGParser/sigs/voxel.sig @@ -238,7 +238,7 @@ ComputePSO Lighting root = DefaultLayout; [EntryPoint = CS] - compute = voxelgi/voxel_lighting; + compute = "voxelgi/voxel_lighting.hlsl"; [rename = SECOND_BOUNCE] [CS, nullable] @@ -251,7 +251,7 @@ ComputePSO VoxelDownsample root = DefaultLayout; [EntryPoint = CS] - compute = voxelgi/voxel_mipmap; + compute = "voxelgi/voxel_mipmap.hlsl"; [rename = COUNT] [CS] @@ -265,7 +265,7 @@ ComputePSO VoxelCopy root = DefaultLayout; [EntryPoint = CS] - compute = voxelgi/voxel_copy; + compute = "voxelgi/voxel_copy.hlsl"; } @@ -274,7 +274,7 @@ ComputePSO VoxelZero root = DefaultLayout; [EntryPoint = CS] - compute = voxelgi/voxel_zero; + compute = "voxelgi/voxel_zero.hlsl"; } ComputePSO VoxelVisibility @@ -282,7 +282,7 @@ ComputePSO VoxelVisibility root = DefaultLayout; [EntryPoint = CS] - compute = voxelgi/voxel_visibility; + compute = "voxelgi/voxel_visibility.hlsl"; } GraphicsPSO VoxelDebug @@ -290,10 +290,10 @@ GraphicsPSO VoxelDebug root = DefaultLayout; [EntryPoint = VS] - vertex = voxelgi/voxel_screen; + vertex = "voxelgi/voxel_screen.hlsl"; [EntryPoint = Debug] - pixel = voxelgi/voxel_screen_debug; + pixel = "voxelgi/voxel_screen_debug.hlsl"; rtv = {R16G16B16A16_FLOAT}; enable_depth = false; @@ -316,7 +316,7 @@ ComputePSO ReflectionCombine root = DefaultLayout; [EntryPoint = CS] - compute = postprocess/reflection_combine; + compute = "postprocess/reflection_combine.hlsl"; } # Computes full lighting on its own -- NOT a composite over ResultTexture @@ -343,7 +343,7 @@ ComputePSO RTXCombine root = DefaultLayout; [EntryPoint = CS] - compute = rtx/rtx_combine; + compute = "rtx/rtx_combine.hlsl"; } diff --git a/sources/SIGParser/sigs/vsm.sig b/sources/SIGParser/sigs/vsm.sig index 4d6a53c9a..1523df0d6 100644 --- a/sources/SIGParser/sigs/vsm.sig +++ b/sources/SIGParser/sigs/vsm.sig @@ -255,7 +255,7 @@ ComputePSO VSMCopyPageDepth root = DefaultLayout; [EntryPoint = CS] - compute = shadows/vsm/vsm_copy_page_depth; + compute = "shadows/vsm/vsm_copy_page_depth.hlsl"; } # Phase 5.14: batches the copy step across every dirty page at once (Z @@ -283,7 +283,7 @@ ComputePSO VSMCopyPageDepthBatch root = DefaultLayout; [EntryPoint = CS] - compute = shadows/vsm/vsm_copy_page_depth_batch; + compute = "shadows/vsm/vsm_copy_page_depth_batch.hlsl"; } # Phase 5.14: one dispatch per mip level, covering every dirty page at once @@ -318,7 +318,7 @@ ComputePSO VSMDownsampleHiZBatch root = DefaultLayout; [EntryPoint = CS] - compute = shadows/vsm/vsm_hiz_downsample_batch; + compute = "shadows/vsm/vsm_hiz_downsample_batch.hlsl"; } [Bind = DefaultLayout::Instance0] @@ -417,7 +417,7 @@ ComputePSO VSMBlockerClassify root = DefaultLayout; [EntryPoint = CS_BLOCKER_CLASSIFY] - compute = shadows/vsm/vsm_blocker_classify; + compute = "shadows/vsm/vsm_blocker_classify.hlsl"; } # Stage 2 follow-up: even a tile stage 1 bucketed as search_tiles can turn @@ -505,7 +505,7 @@ ComputePSO VSMApplyCompute root = DefaultLayout; [EntryPoint = CS_RESULT] - compute = shadows/vsm/vsm; + compute = "shadows/vsm/vsm.hlsl"; } # Blocker-search extraction: INDIRECT dispatch (Phase 5.18 Part A follow-up: @@ -522,7 +522,7 @@ ComputePSO VSMBlockerSearchCompute root = DefaultLayout; [EntryPoint = CS_BLOCKER_SEARCH] - compute = shadows/vsm/vsm_blocker_search; + compute = "shadows/vsm/vsm_blocker_search.hlsl"; } # Stage 3: three PSOs sharing one file (VSM_ShadowResolve.hlsl), one @@ -534,7 +534,7 @@ ComputePSO VSMFullLit root = DefaultLayout; [EntryPoint = CS_FULL_LIT] - compute = shadows/vsm/vsm_shadow_resolve; + compute = "shadows/vsm/vsm_shadow_resolve.hlsl"; } ComputePSO VSMFullShadow @@ -542,7 +542,7 @@ ComputePSO VSMFullShadow root = DefaultLayout; [EntryPoint = CS_FULL_SHADOW] - compute = shadows/vsm/vsm_shadow_resolve; + compute = "shadows/vsm/vsm_shadow_resolve.hlsl"; } ComputePSO VSMShadowBlur @@ -550,7 +550,7 @@ ComputePSO VSMShadowBlur root = DefaultLayout; [EntryPoint = CS_SHADOW_BLUR] - compute = shadows/vsm/vsm_shadow_resolve; + compute = "shadows/vsm/vsm_shadow_resolve.hlsl"; # Once the blocker search (stage 2) finds a blocker, fires one RayQuery # toward the sun to verify/correct its distance against the real BVH -- @@ -575,7 +575,7 @@ ComputePSO VSMDebugOverlayLit root = DefaultLayout; [EntryPoint = CS_OVERLAY_LIT] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } ComputePSO VSMDebugOverlayDark @@ -583,7 +583,7 @@ ComputePSO VSMDebugOverlayDark root = DefaultLayout; [EntryPoint = CS_OVERLAY_DARK] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } ComputePSO VSMDebugOverlayConfirmedLit @@ -591,7 +591,7 @@ ComputePSO VSMDebugOverlayConfirmedLit root = DefaultLayout; [EntryPoint = CS_OVERLAY_CONFIRMED_LIT] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } ComputePSO VSMDebugOverlayBlur @@ -599,7 +599,7 @@ ComputePSO VSMDebugOverlayBlur root = DefaultLayout; [EntryPoint = CS_OVERLAY_BLUR] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } # Moved here from VSM_Combine's own combine_result (VSM.hlsl) now that stage @@ -613,7 +613,7 @@ ComputePSO VSMDebugOverlayPageGrid root = DefaultLayout; [EntryPoint = CS_OVERLAY_PAGE_GRID] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } ComputePSO VSMDebugOverlayRtxReference @@ -621,7 +621,7 @@ ComputePSO VSMDebugOverlayRtxReference root = DefaultLayout; [EntryPoint = CS_OVERLAY_RTX_REFERENCE] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } ComputePSO VSMDebugOverlayContactShadow @@ -629,7 +629,7 @@ ComputePSO VSMDebugOverlayContactShadow root = DefaultLayout; [EntryPoint = CS_OVERLAY_CONTACT_SHADOW] - compute = shadows/vsm/vsm_debug_tile_overlay; + compute = "shadows/vsm/vsm_debug_tile_overlay.hlsl"; } # Amplification-shader-driven compaction (Phase 1b): CPU dispatches AS @@ -647,10 +647,10 @@ GraphicsPSO VSMDepthDraw pixel = null; [EntryPoint = VS] - mesh = shadows/vsm/mesh_shader_vsm; + mesh = "shadows/vsm/mesh_shader_vsm.hlsl"; [EntryPoint = AS] - amplification = shadows/vsm/mesh_shader_vsm; + amplification = "shadows/vsm/mesh_shader_vsm.hlsl"; ds = D32_FLOAT; # Back to cull=Front (render only back faces -- avoids self-shadow acne @@ -695,10 +695,10 @@ GraphicsPSO VSMDepthDrawConservative pixel = null; [EntryPoint = VS] - mesh = shadows/vsm/mesh_shader_vsm; + mesh = "shadows/vsm/mesh_shader_vsm.hlsl"; [EntryPoint = AS] - amplification = shadows/vsm/mesh_shader_vsm; + amplification = "shadows/vsm/mesh_shader_vsm.hlsl"; ds = D32_FLOAT; cull = Front; @@ -728,10 +728,10 @@ GraphicsPSO VSMDepthDrawMaterial root = DefaultLayout; [EntryPoint = VS] - mesh = shadows/vsm/mesh_shader_vsm; + mesh = "shadows/vsm/mesh_shader_vsm.hlsl"; [EntryPoint = AS] - amplification = shadows/vsm/mesh_shader_vsm; + amplification = "shadows/vsm/mesh_shader_vsm.hlsl"; ds = D32_FLOAT; cull = Front; @@ -807,7 +807,7 @@ ComputePSO VSMGatherDispatch root = DefaultLayout; [EntryPoint = CS] - compute = shadows/vsm/vsm_gather_dispatch; + compute = "shadows/vsm/vsm_gather_dispatch.hlsl"; } # Phase 5.19: alpha-cutout material routing. A different PSO from @@ -841,7 +841,7 @@ ComputePSO VSMGatherDispatchMaterial root = DefaultLayout; [EntryPoint = CS_MATERIAL] - compute = shadows/vsm/vsm_gather_dispatch; + compute = "shadows/vsm/vsm_gather_dispatch.hlsl"; } # GPU-driven replacement for VSM.cpp's old per-frame scene->iterate_meshes() @@ -1087,7 +1087,7 @@ ComputePSO VSMScreenSpaceShadow root = DefaultLayout; [EntryPoint = CS] - compute = shadows/vsm/vsm_screen_space_shadow; + compute = "shadows/vsm/vsm_screen_space_shadow.hlsl"; } [Compute] @@ -1310,7 +1310,7 @@ ComputePSO VSMDepthAnalysis root = DefaultLayout; [EntryPoint = CS] - compute = shadows/vsm/vsm_depth_analysis; + compute = "shadows/vsm/vsm_depth_analysis.hlsl"; } [Compute] From dc406065a270ed17eb8bf552dc5d8877b19f545c Mon Sep 17 00:00:00 2001 From: cheater Date: Wed, 23 Sep 2026 14:37:46 +0300 Subject: [PATCH 3/5] sig button --- sources/SIGParser/.antlr/SIG.interp | 11 +- sources/SIGParser/.antlr/SIG.tokens | 153 +- sources/SIGParser/.antlr/SIGBaseListener.h | 9 + sources/SIGParser/.antlr/SIGBaseVisitor.h | 12 + sources/SIGParser/.antlr/SIGLexer.cpp | 668 ++--- sources/SIGParser/.antlr/SIGLexer.h | 33 +- sources/SIGParser/.antlr/SIGLexer.interp | 13 +- sources/SIGParser/.antlr/SIGLexer.tokens | 153 +- sources/SIGParser/.antlr/SIGListener.h | 9 + sources/SIGParser/.antlr/SIGParser.cpp | 2217 ++++++++++------- sources/SIGParser/.antlr/SIGParser.h | 108 +- sources/SIGParser/.antlr/SIGVisitor.h | 6 + sources/SIGParser/LSP.cpp | 75 +- sources/SIGParser/Parsed.h | 15 +- sources/SIGParser/Parsing.cpp | 42 +- sources/SIGParser/REFACTOR_TODO.md | 7 + sources/SIGParser/SIG.g4 | 66 +- sources/SIGParser/Validate.cpp | 26 +- sources/SIGParser/editor/SigCommands.vsct | 61 + sources/SIGParser/editor/SigPackage.cs | 239 ++ sources/SIGParser/editor/gen_vs_extension.py | 101 +- sources/SIGParser/sigs/FrameData.sig | 62 +- sources/SIGParser/sigs/ddgi.sig | 118 +- sources/SIGParser/sigs/defaultlayout.sig | 34 +- sources/SIGParser/sigs/raytracing.sig | 27 +- sources/SIGParser/sigs/voxel.sig | 22 +- workdir/shaders/autogen/tables/DDGIProbes.h | 59 - workdir/shaders/autogen/tables/DebugInfo.h | 38 +- workdir/shaders/autogen/tables/FrameInfo.h | 55 +- workdir/shaders/autogen/tables/RayCone.h | 3 +- workdir/shaders/autogen/tables/RayPayload.h | 3 - workdir/shaders/autogen/tables/Triangle.h | 18 +- .../autogen/tables/VoxelTilingParams.h | 20 +- 33 files changed, 2787 insertions(+), 1696 deletions(-) create mode 100644 sources/SIGParser/editor/SigCommands.vsct create mode 100644 sources/SIGParser/editor/SigPackage.cs diff --git a/sources/SIGParser/.antlr/SIG.interp b/sources/SIGParser/.antlr/SIG.interp index 9a839fdaf..bd102a4c6 100644 --- a/sources/SIGParser/.antlr/SIG.interp +++ b/sources/SIGParser/.antlr/SIG.interp @@ -7,7 +7,6 @@ null 'define' 'rtv' 'blend' -':' 'launch' 'entry' 'num_threads' @@ -61,6 +60,7 @@ null '^' '!' ';' +':' '.' '=' '(' @@ -99,6 +99,7 @@ null null null '*' +null '%{' '}%' null @@ -149,7 +150,6 @@ null null null null -null OR AND PIPE @@ -166,6 +166,7 @@ MOD POW NOT SCOL +COLON DOT ASSIGN OPAR @@ -204,6 +205,7 @@ RAWEXPR COMMENT SPACE POINTER +FUNC_BODY INSERT_START INSERT_END INSERT_BLOCK @@ -250,6 +252,9 @@ layout_stat layout_block layout_definition table_stat +function_definition +function_params +function_semantic table_block table_definition rt_color_declaration @@ -303,4 +308,4 @@ bool_type atn: -[4, 1, 102, 817, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 198, 8, 0, 10, 0, 12, 0, 201, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 213, 8, 2, 1, 2, 1, 2, 1, 2, 4, 2, 218, 8, 2, 11, 2, 12, 2, 219, 1, 2, 1, 2, 3, 2, 224, 8, 2, 1, 3, 4, 3, 227, 8, 3, 11, 3, 12, 3, 228, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 236, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 257, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 263, 8, 12, 10, 12, 12, 12, 266, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 274, 8, 14, 1, 14, 1, 14, 1, 15, 5, 15, 279, 8, 15, 10, 15, 12, 15, 282, 9, 15, 1, 15, 1, 15, 1, 15, 3, 15, 287, 8, 15, 1, 15, 1, 15, 3, 15, 291, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 5, 18, 306, 8, 18, 10, 18, 12, 18, 309, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 315, 8, 18, 1, 18, 1, 18, 1, 19, 5, 19, 320, 8, 19, 10, 19, 12, 19, 323, 9, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 5, 20, 331, 8, 20, 10, 20, 12, 20, 334, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 5, 22, 344, 8, 22, 10, 22, 12, 22, 347, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 5, 24, 359, 8, 24, 10, 24, 12, 24, 362, 9, 24, 1, 24, 3, 24, 365, 8, 24, 1, 24, 3, 24, 368, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 3, 30, 383, 8, 30, 1, 30, 1, 30, 5, 30, 387, 8, 30, 10, 30, 12, 30, 390, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 401, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 407, 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 419, 8, 36, 10, 36, 12, 36, 422, 9, 36, 1, 37, 1, 37, 1, 37, 3, 37, 427, 8, 37, 1, 38, 5, 38, 430, 8, 38, 10, 38, 12, 38, 433, 9, 38, 1, 39, 1, 39, 1, 39, 3, 39, 438, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 447, 8, 40, 1, 41, 5, 41, 450, 8, 41, 10, 41, 12, 41, 453, 9, 41, 1, 42, 5, 42, 456, 8, 42, 10, 42, 12, 42, 459, 9, 42, 1, 42, 1, 42, 1, 42, 3, 42, 464, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 481, 8, 45, 1, 46, 5, 46, 484, 8, 46, 10, 46, 12, 46, 487, 9, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 501, 8, 49, 10, 49, 12, 49, 504, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 5, 51, 514, 8, 51, 10, 51, 12, 51, 517, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 528, 8, 52, 1, 53, 5, 53, 531, 8, 53, 10, 53, 12, 53, 534, 9, 53, 1, 54, 5, 54, 537, 8, 54, 10, 54, 12, 54, 540, 9, 54, 1, 54, 1, 54, 1, 54, 3, 54, 545, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 558, 8, 55, 1, 56, 5, 56, 561, 8, 56, 10, 56, 12, 56, 564, 9, 56, 1, 57, 5, 57, 567, 8, 57, 10, 57, 12, 57, 570, 9, 57, 1, 57, 1, 57, 1, 57, 3, 57, 575, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 583, 8, 58, 1, 59, 5, 59, 586, 8, 59, 10, 59, 12, 59, 589, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 594, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 5, 63, 608, 8, 63, 10, 63, 12, 63, 611, 9, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 3, 64, 621, 8, 64, 1, 65, 5, 65, 624, 8, 65, 10, 65, 12, 65, 627, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 640, 8, 67, 1, 68, 5, 68, 643, 8, 68, 10, 68, 12, 68, 646, 9, 68, 1, 69, 5, 69, 649, 8, 69, 10, 69, 12, 69, 652, 9, 69, 1, 69, 1, 69, 1, 69, 3, 69, 657, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 3, 70, 666, 8, 70, 1, 71, 5, 71, 669, 8, 71, 10, 71, 12, 71, 672, 9, 71, 1, 72, 5, 72, 675, 8, 72, 10, 72, 12, 72, 678, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 683, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 691, 8, 73, 1, 74, 5, 74, 694, 8, 74, 10, 74, 12, 74, 697, 9, 74, 1, 75, 5, 75, 700, 8, 75, 10, 75, 12, 75, 703, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 708, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 5, 76, 715, 8, 76, 10, 76, 12, 76, 718, 9, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 3, 77, 726, 8, 77, 1, 78, 5, 78, 729, 8, 78, 10, 78, 12, 78, 732, 9, 78, 1, 79, 5, 79, 735, 8, 79, 10, 79, 12, 79, 738, 9, 79, 1, 79, 1, 79, 1, 79, 3, 79, 743, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 5, 80, 750, 8, 80, 10, 80, 12, 80, 753, 9, 80, 1, 80, 1, 80, 1, 80, 3, 80, 758, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 5, 81, 765, 8, 81, 10, 81, 12, 81, 768, 9, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 774, 8, 81, 1, 82, 5, 82, 777, 8, 82, 10, 82, 12, 82, 780, 9, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 3, 84, 791, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, 797, 8, 85, 1, 86, 5, 86, 800, 8, 86, 10, 86, 12, 86, 803, 9, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 17, 280, 307, 321, 332, 345, 420, 457, 515, 538, 568, 609, 650, 676, 701, 716, 736, 751, 0, 91, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 0, 6, 4, 0, 46, 47, 49, 54, 60, 60, 64, 65, 2, 0, 92, 92, 95, 95, 1, 0, 9, 13, 1, 0, 14, 26, 1, 0, 27, 45, 1, 0, 70, 71, 840, 0, 199, 1, 0, 0, 0, 2, 204, 1, 0, 0, 0, 4, 223, 1, 0, 0, 0, 6, 226, 1, 0, 0, 0, 8, 235, 1, 0, 0, 0, 10, 237, 1, 0, 0, 0, 12, 241, 1, 0, 0, 0, 14, 245, 1, 0, 0, 0, 16, 247, 1, 0, 0, 0, 18, 249, 1, 0, 0, 0, 20, 251, 1, 0, 0, 0, 22, 254, 1, 0, 0, 0, 24, 258, 1, 0, 0, 0, 26, 269, 1, 0, 0, 0, 28, 271, 1, 0, 0, 0, 30, 280, 1, 0, 0, 0, 32, 294, 1, 0, 0, 0, 34, 298, 1, 0, 0, 0, 36, 307, 1, 0, 0, 0, 38, 321, 1, 0, 0, 0, 40, 332, 1, 0, 0, 0, 42, 340, 1, 0, 0, 0, 44, 345, 1, 0, 0, 0, 46, 353, 1, 0, 0, 0, 48, 355, 1, 0, 0, 0, 50, 369, 1, 0, 0, 0, 52, 371, 1, 0, 0, 0, 54, 373, 1, 0, 0, 0, 56, 375, 1, 0, 0, 0, 58, 377, 1, 0, 0, 0, 60, 379, 1, 0, 0, 0, 62, 400, 1, 0, 0, 0, 64, 406, 1, 0, 0, 0, 66, 408, 1, 0, 0, 0, 68, 410, 1, 0, 0, 0, 70, 412, 1, 0, 0, 0, 72, 414, 1, 0, 0, 0, 74, 426, 1, 0, 0, 0, 76, 431, 1, 0, 0, 0, 78, 434, 1, 0, 0, 0, 80, 446, 1, 0, 0, 0, 82, 451, 1, 0, 0, 0, 84, 457, 1, 0, 0, 0, 86, 469, 1, 0, 0, 0, 88, 473, 1, 0, 0, 0, 90, 480, 1, 0, 0, 0, 92, 485, 1, 0, 0, 0, 94, 488, 1, 0, 0, 0, 96, 494, 1, 0, 0, 0, 98, 496, 1, 0, 0, 0, 100, 507, 1, 0, 0, 0, 102, 515, 1, 0, 0, 0, 104, 527, 1, 0, 0, 0, 106, 532, 1, 0, 0, 0, 108, 538, 1, 0, 0, 0, 110, 557, 1, 0, 0, 0, 112, 562, 1, 0, 0, 0, 114, 568, 1, 0, 0, 0, 116, 582, 1, 0, 0, 0, 118, 587, 1, 0, 0, 0, 120, 590, 1, 0, 0, 0, 122, 599, 1, 0, 0, 0, 124, 601, 1, 0, 0, 0, 126, 609, 1, 0, 0, 0, 128, 620, 1, 0, 0, 0, 130, 625, 1, 0, 0, 0, 132, 628, 1, 0, 0, 0, 134, 639, 1, 0, 0, 0, 136, 644, 1, 0, 0, 0, 138, 650, 1, 0, 0, 0, 140, 665, 1, 0, 0, 0, 142, 670, 1, 0, 0, 0, 144, 676, 1, 0, 0, 0, 146, 690, 1, 0, 0, 0, 148, 695, 1, 0, 0, 0, 150, 701, 1, 0, 0, 0, 152, 716, 1, 0, 0, 0, 154, 725, 1, 0, 0, 0, 156, 730, 1, 0, 0, 0, 158, 736, 1, 0, 0, 0, 160, 751, 1, 0, 0, 0, 162, 773, 1, 0, 0, 0, 164, 778, 1, 0, 0, 0, 166, 781, 1, 0, 0, 0, 168, 787, 1, 0, 0, 0, 170, 796, 1, 0, 0, 0, 172, 801, 1, 0, 0, 0, 174, 804, 1, 0, 0, 0, 176, 810, 1, 0, 0, 0, 178, 812, 1, 0, 0, 0, 180, 814, 1, 0, 0, 0, 182, 198, 3, 78, 39, 0, 183, 198, 3, 84, 42, 0, 184, 198, 3, 94, 47, 0, 185, 198, 3, 138, 69, 0, 186, 198, 3, 108, 54, 0, 187, 198, 3, 114, 57, 0, 188, 198, 3, 120, 60, 0, 189, 198, 3, 144, 72, 0, 190, 198, 3, 150, 75, 0, 191, 198, 3, 160, 80, 0, 192, 198, 3, 158, 79, 0, 193, 198, 3, 166, 83, 0, 194, 198, 3, 174, 87, 0, 195, 198, 3, 2, 1, 0, 196, 198, 5, 97, 0, 0, 197, 182, 1, 0, 0, 0, 197, 183, 1, 0, 0, 0, 197, 184, 1, 0, 0, 0, 197, 185, 1, 0, 0, 0, 197, 186, 1, 0, 0, 0, 197, 187, 1, 0, 0, 0, 197, 188, 1, 0, 0, 0, 197, 189, 1, 0, 0, 0, 197, 190, 1, 0, 0, 0, 197, 191, 1, 0, 0, 0, 197, 192, 1, 0, 0, 0, 197, 193, 1, 0, 0, 0, 197, 194, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 196, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 202, 1, 0, 0, 0, 201, 199, 1, 0, 0, 0, 202, 203, 5, 0, 0, 1, 203, 1, 1, 0, 0, 0, 204, 205, 5, 1, 0, 0, 205, 206, 3, 52, 26, 0, 206, 207, 3, 20, 10, 0, 207, 208, 5, 61, 0, 0, 208, 3, 1, 0, 0, 0, 209, 210, 3, 56, 28, 0, 210, 211, 5, 2, 0, 0, 211, 213, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 217, 3, 16, 8, 0, 215, 216, 5, 48, 0, 0, 216, 218, 3, 16, 8, 0, 217, 215, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 224, 1, 0, 0, 0, 221, 224, 3, 18, 9, 0, 222, 224, 3, 6, 3, 0, 223, 212, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 222, 1, 0, 0, 0, 224, 5, 1, 0, 0, 0, 225, 227, 3, 8, 4, 0, 226, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 7, 1, 0, 0, 0, 230, 236, 3, 10, 5, 0, 231, 236, 3, 60, 30, 0, 232, 236, 3, 12, 6, 0, 233, 236, 3, 62, 31, 0, 234, 236, 3, 14, 7, 0, 235, 230, 1, 0, 0, 0, 235, 231, 1, 0, 0, 0, 235, 232, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 234, 1, 0, 0, 0, 236, 9, 1, 0, 0, 0, 237, 238, 3, 56, 28, 0, 238, 239, 5, 2, 0, 0, 239, 240, 3, 62, 31, 0, 240, 11, 1, 0, 0, 0, 241, 242, 3, 52, 26, 0, 242, 243, 5, 62, 0, 0, 243, 244, 3, 52, 26, 0, 244, 13, 1, 0, 0, 0, 245, 246, 7, 0, 0, 0, 246, 15, 1, 0, 0, 0, 247, 248, 3, 62, 31, 0, 248, 17, 1, 0, 0, 0, 249, 250, 5, 96, 0, 0, 250, 19, 1, 0, 0, 0, 251, 252, 5, 63, 0, 0, 252, 253, 3, 4, 2, 0, 253, 21, 1, 0, 0, 0, 254, 256, 3, 52, 26, 0, 255, 257, 3, 20, 10, 0, 256, 255, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 23, 1, 0, 0, 0, 258, 259, 5, 68, 0, 0, 259, 264, 3, 22, 11, 0, 260, 261, 5, 3, 0, 0, 261, 263, 3, 22, 11, 0, 262, 260, 1, 0, 0, 0, 263, 266, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 267, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 267, 268, 5, 69, 0, 0, 268, 25, 1, 0, 0, 0, 269, 270, 5, 93, 0, 0, 270, 27, 1, 0, 0, 0, 271, 273, 5, 68, 0, 0, 272, 274, 3, 26, 13, 0, 273, 272, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 5, 69, 0, 0, 276, 29, 1, 0, 0, 0, 277, 279, 3, 24, 12, 0, 278, 277, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 3, 66, 33, 0, 284, 286, 3, 52, 26, 0, 285, 287, 3, 28, 14, 0, 286, 285, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 289, 5, 63, 0, 0, 289, 291, 3, 62, 31, 0, 290, 288, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 61, 0, 0, 293, 31, 1, 0, 0, 0, 294, 295, 5, 86, 0, 0, 295, 296, 3, 52, 26, 0, 296, 297, 5, 61, 0, 0, 297, 33, 1, 0, 0, 0, 298, 299, 5, 4, 0, 0, 299, 300, 3, 52, 26, 0, 300, 301, 5, 63, 0, 0, 301, 302, 3, 62, 31, 0, 302, 303, 5, 61, 0, 0, 303, 35, 1, 0, 0, 0, 304, 306, 3, 24, 12, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 310, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 311, 5, 5, 0, 0, 311, 314, 3, 52, 26, 0, 312, 313, 5, 63, 0, 0, 313, 315, 3, 98, 49, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 5, 61, 0, 0, 317, 37, 1, 0, 0, 0, 318, 320, 3, 24, 12, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 6, 0, 0, 325, 326, 5, 63, 0, 0, 326, 327, 3, 98, 49, 0, 327, 328, 5, 61, 0, 0, 328, 39, 1, 0, 0, 0, 329, 331, 3, 24, 12, 0, 330, 329, 1, 0, 0, 0, 331, 334, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 335, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 335, 336, 5, 7, 0, 0, 336, 337, 5, 63, 0, 0, 337, 338, 3, 98, 49, 0, 338, 339, 5, 61, 0, 0, 339, 41, 1, 0, 0, 0, 340, 341, 5, 99, 0, 0, 341, 43, 1, 0, 0, 0, 342, 344, 3, 24, 12, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 349, 3, 178, 89, 0, 349, 350, 5, 63, 0, 0, 350, 351, 3, 62, 31, 0, 351, 352, 5, 61, 0, 0, 352, 45, 1, 0, 0, 0, 353, 354, 5, 92, 0, 0, 354, 47, 1, 0, 0, 0, 355, 364, 3, 46, 23, 0, 356, 360, 5, 52, 0, 0, 357, 359, 3, 58, 29, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 365, 5, 51, 0, 0, 364, 356, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 368, 3, 42, 21, 0, 367, 366, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 49, 1, 0, 0, 0, 369, 370, 5, 92, 0, 0, 370, 51, 1, 0, 0, 0, 371, 372, 5, 92, 0, 0, 372, 53, 1, 0, 0, 0, 373, 374, 5, 92, 0, 0, 374, 55, 1, 0, 0, 0, 375, 376, 5, 92, 0, 0, 376, 57, 1, 0, 0, 0, 377, 378, 5, 92, 0, 0, 378, 59, 1, 0, 0, 0, 379, 380, 5, 92, 0, 0, 380, 382, 5, 64, 0, 0, 381, 383, 3, 64, 32, 0, 382, 381, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 388, 1, 0, 0, 0, 384, 385, 5, 3, 0, 0, 385, 387, 3, 64, 32, 0, 386, 384, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, 392, 5, 65, 0, 0, 392, 61, 1, 0, 0, 0, 393, 401, 3, 176, 88, 0, 394, 401, 5, 92, 0, 0, 395, 401, 5, 93, 0, 0, 396, 401, 5, 94, 0, 0, 397, 401, 3, 180, 90, 0, 398, 401, 3, 60, 30, 0, 399, 401, 3, 98, 49, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 63, 1, 0, 0, 0, 402, 407, 5, 92, 0, 0, 403, 407, 5, 93, 0, 0, 404, 407, 5, 94, 0, 0, 405, 407, 3, 180, 90, 0, 406, 402, 1, 0, 0, 0, 406, 403, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 405, 1, 0, 0, 0, 407, 65, 1, 0, 0, 0, 408, 409, 3, 48, 24, 0, 409, 67, 1, 0, 0, 0, 410, 411, 5, 102, 0, 0, 411, 69, 1, 0, 0, 0, 412, 413, 7, 1, 0, 0, 413, 71, 1, 0, 0, 0, 414, 415, 5, 8, 0, 0, 415, 420, 3, 50, 25, 0, 416, 417, 5, 3, 0, 0, 417, 419, 3, 50, 25, 0, 418, 416, 1, 0, 0, 0, 419, 422, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 421, 73, 1, 0, 0, 0, 422, 420, 1, 0, 0, 0, 423, 427, 3, 32, 16, 0, 424, 427, 3, 34, 17, 0, 425, 427, 5, 97, 0, 0, 426, 423, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 426, 425, 1, 0, 0, 0, 427, 75, 1, 0, 0, 0, 428, 430, 3, 74, 37, 0, 429, 428, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 77, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 435, 5, 73, 0, 0, 435, 437, 3, 52, 26, 0, 436, 438, 3, 72, 36, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 5, 66, 0, 0, 440, 441, 3, 76, 38, 0, 441, 442, 5, 67, 0, 0, 442, 79, 1, 0, 0, 0, 443, 447, 3, 30, 15, 0, 444, 447, 3, 68, 34, 0, 445, 447, 5, 97, 0, 0, 446, 443, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447, 81, 1, 0, 0, 0, 448, 450, 3, 80, 40, 0, 449, 448, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 83, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 454, 456, 3, 24, 12, 0, 455, 454, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 460, 461, 5, 74, 0, 0, 461, 463, 3, 52, 26, 0, 462, 464, 3, 72, 36, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466, 5, 66, 0, 0, 466, 467, 3, 82, 41, 0, 467, 468, 5, 67, 0, 0, 468, 85, 1, 0, 0, 0, 469, 470, 3, 66, 33, 0, 470, 471, 3, 52, 26, 0, 471, 472, 5, 61, 0, 0, 472, 87, 1, 0, 0, 0, 473, 474, 5, 89, 0, 0, 474, 475, 3, 52, 26, 0, 475, 476, 5, 61, 0, 0, 476, 89, 1, 0, 0, 0, 477, 481, 3, 86, 43, 0, 478, 481, 3, 88, 44, 0, 479, 481, 5, 97, 0, 0, 480, 477, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 479, 1, 0, 0, 0, 481, 91, 1, 0, 0, 0, 482, 484, 3, 90, 45, 0, 483, 482, 1, 0, 0, 0, 484, 487, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 93, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 488, 489, 5, 87, 0, 0, 489, 490, 3, 52, 26, 0, 490, 491, 5, 66, 0, 0, 491, 492, 3, 92, 46, 0, 492, 493, 5, 67, 0, 0, 493, 95, 1, 0, 0, 0, 494, 495, 3, 62, 31, 0, 495, 97, 1, 0, 0, 0, 496, 497, 5, 66, 0, 0, 497, 502, 3, 96, 48, 0, 498, 499, 5, 3, 0, 0, 499, 501, 3, 96, 48, 0, 500, 498, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 505, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 506, 5, 67, 0, 0, 506, 99, 1, 0, 0, 0, 507, 508, 5, 90, 0, 0, 508, 509, 5, 63, 0, 0, 509, 510, 3, 52, 26, 0, 510, 511, 5, 61, 0, 0, 511, 101, 1, 0, 0, 0, 512, 514, 3, 24, 12, 0, 513, 512, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 516, 518, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 518, 519, 3, 176, 88, 0, 519, 520, 5, 63, 0, 0, 520, 521, 3, 70, 35, 0, 521, 522, 5, 61, 0, 0, 522, 103, 1, 0, 0, 0, 523, 528, 3, 100, 50, 0, 524, 528, 3, 102, 51, 0, 525, 528, 3, 36, 18, 0, 526, 528, 5, 97, 0, 0, 527, 523, 1, 0, 0, 0, 527, 524, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 527, 526, 1, 0, 0, 0, 528, 105, 1, 0, 0, 0, 529, 531, 3, 104, 52, 0, 530, 529, 1, 0, 0, 0, 531, 534, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 107, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 535, 537, 3, 24, 12, 0, 536, 535, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 539, 541, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 542, 5, 75, 0, 0, 542, 544, 3, 52, 26, 0, 543, 545, 3, 72, 36, 0, 544, 543, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 66, 0, 0, 547, 548, 3, 106, 53, 0, 548, 549, 5, 67, 0, 0, 549, 109, 1, 0, 0, 0, 550, 558, 3, 100, 50, 0, 551, 558, 3, 102, 51, 0, 552, 558, 3, 36, 18, 0, 553, 558, 3, 38, 19, 0, 554, 558, 3, 40, 20, 0, 555, 558, 3, 44, 22, 0, 556, 558, 5, 97, 0, 0, 557, 550, 1, 0, 0, 0, 557, 551, 1, 0, 0, 0, 557, 552, 1, 0, 0, 0, 557, 553, 1, 0, 0, 0, 557, 554, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 556, 1, 0, 0, 0, 558, 111, 1, 0, 0, 0, 559, 561, 3, 110, 55, 0, 560, 559, 1, 0, 0, 0, 561, 564, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 113, 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 565, 567, 3, 24, 12, 0, 566, 565, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 569, 571, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 572, 5, 76, 0, 0, 572, 574, 3, 52, 26, 0, 573, 575, 3, 72, 36, 0, 574, 573, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 5, 66, 0, 0, 577, 578, 3, 112, 56, 0, 578, 579, 5, 67, 0, 0, 579, 115, 1, 0, 0, 0, 580, 583, 3, 100, 50, 0, 581, 583, 5, 97, 0, 0, 582, 580, 1, 0, 0, 0, 582, 581, 1, 0, 0, 0, 583, 117, 1, 0, 0, 0, 584, 586, 3, 116, 58, 0, 585, 584, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 119, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 591, 5, 77, 0, 0, 591, 593, 3, 52, 26, 0, 592, 594, 3, 72, 36, 0, 593, 592, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 5, 66, 0, 0, 596, 597, 3, 118, 59, 0, 597, 598, 5, 67, 0, 0, 598, 121, 1, 0, 0, 0, 599, 600, 7, 2, 0, 0, 600, 123, 1, 0, 0, 0, 601, 602, 3, 122, 61, 0, 602, 603, 5, 63, 0, 0, 603, 604, 3, 62, 31, 0, 604, 605, 5, 61, 0, 0, 605, 125, 1, 0, 0, 0, 606, 608, 3, 24, 12, 0, 607, 606, 1, 0, 0, 0, 608, 611, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 609, 607, 1, 0, 0, 0, 610, 612, 1, 0, 0, 0, 611, 609, 1, 0, 0, 0, 612, 613, 5, 80, 0, 0, 613, 614, 3, 66, 33, 0, 614, 615, 3, 52, 26, 0, 615, 616, 5, 61, 0, 0, 616, 127, 1, 0, 0, 0, 617, 621, 3, 124, 62, 0, 618, 621, 3, 126, 63, 0, 619, 621, 5, 97, 0, 0, 620, 617, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 619, 1, 0, 0, 0, 621, 129, 1, 0, 0, 0, 622, 624, 3, 128, 64, 0, 623, 622, 1, 0, 0, 0, 624, 627, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 131, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 628, 629, 5, 79, 0, 0, 629, 630, 3, 52, 26, 0, 630, 631, 5, 66, 0, 0, 631, 632, 3, 130, 65, 0, 632, 633, 5, 67, 0, 0, 633, 133, 1, 0, 0, 0, 634, 640, 3, 100, 50, 0, 635, 640, 3, 102, 51, 0, 636, 640, 3, 36, 18, 0, 637, 640, 3, 132, 66, 0, 638, 640, 5, 97, 0, 0, 639, 634, 1, 0, 0, 0, 639, 635, 1, 0, 0, 0, 639, 636, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 638, 1, 0, 0, 0, 640, 135, 1, 0, 0, 0, 641, 643, 3, 134, 67, 0, 642, 641, 1, 0, 0, 0, 643, 646, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 137, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 647, 649, 3, 24, 12, 0, 648, 647, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 653, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 653, 654, 5, 78, 0, 0, 654, 656, 3, 52, 26, 0, 655, 657, 3, 72, 36, 0, 656, 655, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 5, 66, 0, 0, 659, 660, 3, 136, 68, 0, 660, 661, 5, 67, 0, 0, 661, 139, 1, 0, 0, 0, 662, 666, 3, 102, 51, 0, 663, 666, 5, 97, 0, 0, 664, 666, 3, 44, 22, 0, 665, 662, 1, 0, 0, 0, 665, 663, 1, 0, 0, 0, 665, 664, 1, 0, 0, 0, 666, 141, 1, 0, 0, 0, 667, 669, 3, 140, 70, 0, 668, 667, 1, 0, 0, 0, 669, 672, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 143, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 673, 675, 3, 24, 12, 0, 674, 673, 1, 0, 0, 0, 675, 678, 1, 0, 0, 0, 676, 677, 1, 0, 0, 0, 676, 674, 1, 0, 0, 0, 677, 679, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 679, 680, 5, 82, 0, 0, 680, 682, 3, 52, 26, 0, 681, 683, 3, 72, 36, 0, 682, 681, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 5, 66, 0, 0, 685, 686, 3, 142, 71, 0, 686, 687, 5, 67, 0, 0, 687, 145, 1, 0, 0, 0, 688, 691, 3, 102, 51, 0, 689, 691, 5, 97, 0, 0, 690, 688, 1, 0, 0, 0, 690, 689, 1, 0, 0, 0, 691, 147, 1, 0, 0, 0, 692, 694, 3, 146, 73, 0, 693, 692, 1, 0, 0, 0, 694, 697, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 149, 1, 0, 0, 0, 697, 695, 1, 0, 0, 0, 698, 700, 3, 24, 12, 0, 699, 698, 1, 0, 0, 0, 700, 703, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 702, 704, 1, 0, 0, 0, 703, 701, 1, 0, 0, 0, 704, 705, 5, 81, 0, 0, 705, 707, 3, 52, 26, 0, 706, 708, 3, 72, 36, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 5, 66, 0, 0, 710, 711, 3, 148, 74, 0, 711, 712, 5, 67, 0, 0, 712, 151, 1, 0, 0, 0, 713, 715, 3, 24, 12, 0, 714, 713, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 717, 719, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 719, 720, 3, 66, 33, 0, 720, 721, 3, 52, 26, 0, 721, 722, 5, 61, 0, 0, 722, 153, 1, 0, 0, 0, 723, 726, 3, 152, 76, 0, 724, 726, 5, 97, 0, 0, 725, 723, 1, 0, 0, 0, 725, 724, 1, 0, 0, 0, 726, 155, 1, 0, 0, 0, 727, 729, 3, 154, 77, 0, 728, 727, 1, 0, 0, 0, 729, 732, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 157, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 733, 735, 3, 24, 12, 0, 734, 733, 1, 0, 0, 0, 735, 738, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 739, 1, 0, 0, 0, 738, 736, 1, 0, 0, 0, 739, 740, 5, 84, 0, 0, 740, 742, 3, 52, 26, 0, 741, 743, 3, 72, 36, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 745, 5, 66, 0, 0, 745, 746, 3, 156, 78, 0, 746, 747, 5, 67, 0, 0, 747, 159, 1, 0, 0, 0, 748, 750, 3, 24, 12, 0, 749, 748, 1, 0, 0, 0, 750, 753, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 754, 755, 5, 83, 0, 0, 755, 757, 3, 52, 26, 0, 756, 758, 3, 72, 36, 0, 757, 756, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 760, 5, 66, 0, 0, 760, 761, 3, 156, 78, 0, 761, 762, 5, 67, 0, 0, 762, 161, 1, 0, 0, 0, 763, 765, 3, 24, 12, 0, 764, 763, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 769, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 770, 3, 52, 26, 0, 770, 771, 5, 61, 0, 0, 771, 774, 1, 0, 0, 0, 772, 774, 5, 97, 0, 0, 773, 766, 1, 0, 0, 0, 773, 772, 1, 0, 0, 0, 774, 163, 1, 0, 0, 0, 775, 777, 3, 162, 81, 0, 776, 775, 1, 0, 0, 0, 777, 780, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 165, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 781, 782, 5, 85, 0, 0, 782, 783, 3, 52, 26, 0, 783, 784, 5, 66, 0, 0, 784, 785, 3, 164, 82, 0, 785, 786, 5, 67, 0, 0, 786, 167, 1, 0, 0, 0, 787, 790, 3, 52, 26, 0, 788, 789, 5, 63, 0, 0, 789, 791, 3, 62, 31, 0, 790, 788, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 793, 5, 61, 0, 0, 793, 169, 1, 0, 0, 0, 794, 797, 3, 168, 84, 0, 795, 797, 5, 97, 0, 0, 796, 794, 1, 0, 0, 0, 796, 795, 1, 0, 0, 0, 797, 171, 1, 0, 0, 0, 798, 800, 3, 170, 85, 0, 799, 798, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 173, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 804, 805, 5, 91, 0, 0, 805, 806, 3, 52, 26, 0, 806, 807, 5, 66, 0, 0, 807, 808, 3, 172, 86, 0, 808, 809, 5, 67, 0, 0, 809, 175, 1, 0, 0, 0, 810, 811, 7, 3, 0, 0, 811, 177, 1, 0, 0, 0, 812, 813, 7, 4, 0, 0, 813, 179, 1, 0, 0, 0, 814, 815, 7, 5, 0, 0, 815, 181, 1, 0, 0, 0, 76, 197, 199, 212, 219, 223, 228, 235, 256, 264, 273, 280, 286, 290, 307, 314, 321, 332, 345, 360, 364, 367, 382, 388, 400, 406, 420, 426, 431, 437, 446, 451, 457, 463, 480, 485, 502, 515, 527, 532, 538, 544, 557, 562, 568, 574, 582, 587, 593, 609, 620, 625, 639, 644, 650, 656, 665, 670, 676, 682, 690, 695, 701, 707, 716, 725, 730, 736, 742, 751, 757, 766, 773, 778, 790, 796, 801] \ No newline at end of file +[4, 1, 103, 853, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 204, 8, 0, 10, 0, 12, 0, 207, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 219, 8, 2, 1, 2, 1, 2, 1, 2, 4, 2, 224, 8, 2, 11, 2, 12, 2, 225, 1, 2, 1, 2, 3, 2, 230, 8, 2, 1, 3, 4, 3, 233, 8, 3, 11, 3, 12, 3, 234, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 242, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 263, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 269, 8, 12, 10, 12, 12, 12, 272, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 280, 8, 14, 1, 14, 1, 14, 1, 15, 5, 15, 285, 8, 15, 10, 15, 12, 15, 288, 9, 15, 1, 15, 1, 15, 1, 15, 3, 15, 293, 8, 15, 1, 15, 1, 15, 3, 15, 297, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 5, 18, 312, 8, 18, 10, 18, 12, 18, 315, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 321, 8, 18, 1, 18, 1, 18, 1, 19, 5, 19, 326, 8, 19, 10, 19, 12, 19, 329, 9, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 5, 20, 337, 8, 20, 10, 20, 12, 20, 340, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 5, 22, 350, 8, 22, 10, 22, 12, 22, 353, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 5, 24, 365, 8, 24, 10, 24, 12, 24, 368, 9, 24, 1, 24, 3, 24, 371, 8, 24, 1, 24, 3, 24, 374, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 3, 30, 389, 8, 30, 1, 30, 1, 30, 5, 30, 393, 8, 30, 10, 30, 12, 30, 396, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 407, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 413, 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 425, 8, 36, 10, 36, 12, 36, 428, 9, 36, 1, 37, 1, 37, 1, 37, 3, 37, 433, 8, 37, 1, 38, 5, 38, 436, 8, 38, 10, 38, 12, 38, 439, 9, 38, 1, 39, 1, 39, 1, 39, 3, 39, 444, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 454, 8, 40, 1, 41, 5, 41, 457, 8, 41, 10, 41, 12, 41, 460, 9, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 468, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 477, 8, 42, 10, 42, 12, 42, 480, 9, 42, 1, 43, 1, 43, 1, 43, 1, 44, 5, 44, 486, 8, 44, 10, 44, 12, 44, 489, 9, 44, 1, 45, 5, 45, 492, 8, 45, 10, 45, 12, 45, 495, 9, 45, 1, 45, 1, 45, 1, 45, 3, 45, 500, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 3, 48, 517, 8, 48, 1, 49, 5, 49, 520, 8, 49, 10, 49, 12, 49, 523, 9, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 537, 8, 52, 10, 52, 12, 52, 540, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 5, 54, 550, 8, 54, 10, 54, 12, 54, 553, 9, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 564, 8, 55, 1, 56, 5, 56, 567, 8, 56, 10, 56, 12, 56, 570, 9, 56, 1, 57, 5, 57, 573, 8, 57, 10, 57, 12, 57, 576, 9, 57, 1, 57, 1, 57, 1, 57, 3, 57, 581, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 594, 8, 58, 1, 59, 5, 59, 597, 8, 59, 10, 59, 12, 59, 600, 9, 59, 1, 60, 5, 60, 603, 8, 60, 10, 60, 12, 60, 606, 9, 60, 1, 60, 1, 60, 1, 60, 3, 60, 611, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 3, 61, 619, 8, 61, 1, 62, 5, 62, 622, 8, 62, 10, 62, 12, 62, 625, 9, 62, 1, 63, 1, 63, 1, 63, 3, 63, 630, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 5, 66, 644, 8, 66, 10, 66, 12, 66, 647, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 3, 67, 657, 8, 67, 1, 68, 5, 68, 660, 8, 68, 10, 68, 12, 68, 663, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 676, 8, 70, 1, 71, 5, 71, 679, 8, 71, 10, 71, 12, 71, 682, 9, 71, 1, 72, 5, 72, 685, 8, 72, 10, 72, 12, 72, 688, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 693, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 3, 73, 702, 8, 73, 1, 74, 5, 74, 705, 8, 74, 10, 74, 12, 74, 708, 9, 74, 1, 75, 5, 75, 711, 8, 75, 10, 75, 12, 75, 714, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 719, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 3, 76, 727, 8, 76, 1, 77, 5, 77, 730, 8, 77, 10, 77, 12, 77, 733, 9, 77, 1, 78, 5, 78, 736, 8, 78, 10, 78, 12, 78, 739, 9, 78, 1, 78, 1, 78, 1, 78, 3, 78, 744, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 5, 79, 751, 8, 79, 10, 79, 12, 79, 754, 9, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 762, 8, 80, 1, 81, 5, 81, 765, 8, 81, 10, 81, 12, 81, 768, 9, 81, 1, 82, 5, 82, 771, 8, 82, 10, 82, 12, 82, 774, 9, 82, 1, 82, 1, 82, 1, 82, 3, 82, 779, 8, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 5, 83, 786, 8, 83, 10, 83, 12, 83, 789, 9, 83, 1, 83, 1, 83, 1, 83, 3, 83, 794, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 5, 84, 801, 8, 84, 10, 84, 12, 84, 804, 9, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 810, 8, 84, 1, 85, 5, 85, 813, 8, 85, 10, 85, 12, 85, 816, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 3, 87, 827, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 3, 88, 833, 8, 88, 1, 89, 5, 89, 836, 8, 89, 10, 89, 12, 89, 839, 9, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 18, 286, 313, 327, 338, 351, 426, 458, 493, 551, 574, 604, 645, 686, 712, 737, 752, 772, 787, 0, 94, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 0, 7, 4, 0, 45, 46, 48, 53, 59, 59, 64, 65, 2, 0, 92, 92, 95, 95, 1, 0, 64, 65, 1, 0, 8, 12, 1, 0, 13, 25, 1, 0, 26, 44, 1, 0, 70, 71, 878, 0, 205, 1, 0, 0, 0, 2, 210, 1, 0, 0, 0, 4, 229, 1, 0, 0, 0, 6, 232, 1, 0, 0, 0, 8, 241, 1, 0, 0, 0, 10, 243, 1, 0, 0, 0, 12, 247, 1, 0, 0, 0, 14, 251, 1, 0, 0, 0, 16, 253, 1, 0, 0, 0, 18, 255, 1, 0, 0, 0, 20, 257, 1, 0, 0, 0, 22, 260, 1, 0, 0, 0, 24, 264, 1, 0, 0, 0, 26, 275, 1, 0, 0, 0, 28, 277, 1, 0, 0, 0, 30, 286, 1, 0, 0, 0, 32, 300, 1, 0, 0, 0, 34, 304, 1, 0, 0, 0, 36, 313, 1, 0, 0, 0, 38, 327, 1, 0, 0, 0, 40, 338, 1, 0, 0, 0, 42, 346, 1, 0, 0, 0, 44, 351, 1, 0, 0, 0, 46, 359, 1, 0, 0, 0, 48, 361, 1, 0, 0, 0, 50, 375, 1, 0, 0, 0, 52, 377, 1, 0, 0, 0, 54, 379, 1, 0, 0, 0, 56, 381, 1, 0, 0, 0, 58, 383, 1, 0, 0, 0, 60, 385, 1, 0, 0, 0, 62, 406, 1, 0, 0, 0, 64, 412, 1, 0, 0, 0, 66, 414, 1, 0, 0, 0, 68, 416, 1, 0, 0, 0, 70, 418, 1, 0, 0, 0, 72, 420, 1, 0, 0, 0, 74, 432, 1, 0, 0, 0, 76, 437, 1, 0, 0, 0, 78, 440, 1, 0, 0, 0, 80, 453, 1, 0, 0, 0, 82, 458, 1, 0, 0, 0, 84, 478, 1, 0, 0, 0, 86, 481, 1, 0, 0, 0, 88, 487, 1, 0, 0, 0, 90, 493, 1, 0, 0, 0, 92, 505, 1, 0, 0, 0, 94, 509, 1, 0, 0, 0, 96, 516, 1, 0, 0, 0, 98, 521, 1, 0, 0, 0, 100, 524, 1, 0, 0, 0, 102, 530, 1, 0, 0, 0, 104, 532, 1, 0, 0, 0, 106, 543, 1, 0, 0, 0, 108, 551, 1, 0, 0, 0, 110, 563, 1, 0, 0, 0, 112, 568, 1, 0, 0, 0, 114, 574, 1, 0, 0, 0, 116, 593, 1, 0, 0, 0, 118, 598, 1, 0, 0, 0, 120, 604, 1, 0, 0, 0, 122, 618, 1, 0, 0, 0, 124, 623, 1, 0, 0, 0, 126, 626, 1, 0, 0, 0, 128, 635, 1, 0, 0, 0, 130, 637, 1, 0, 0, 0, 132, 645, 1, 0, 0, 0, 134, 656, 1, 0, 0, 0, 136, 661, 1, 0, 0, 0, 138, 664, 1, 0, 0, 0, 140, 675, 1, 0, 0, 0, 142, 680, 1, 0, 0, 0, 144, 686, 1, 0, 0, 0, 146, 701, 1, 0, 0, 0, 148, 706, 1, 0, 0, 0, 150, 712, 1, 0, 0, 0, 152, 726, 1, 0, 0, 0, 154, 731, 1, 0, 0, 0, 156, 737, 1, 0, 0, 0, 158, 752, 1, 0, 0, 0, 160, 761, 1, 0, 0, 0, 162, 766, 1, 0, 0, 0, 164, 772, 1, 0, 0, 0, 166, 787, 1, 0, 0, 0, 168, 809, 1, 0, 0, 0, 170, 814, 1, 0, 0, 0, 172, 817, 1, 0, 0, 0, 174, 823, 1, 0, 0, 0, 176, 832, 1, 0, 0, 0, 178, 837, 1, 0, 0, 0, 180, 840, 1, 0, 0, 0, 182, 846, 1, 0, 0, 0, 184, 848, 1, 0, 0, 0, 186, 850, 1, 0, 0, 0, 188, 204, 3, 78, 39, 0, 189, 204, 3, 90, 45, 0, 190, 204, 3, 100, 50, 0, 191, 204, 3, 144, 72, 0, 192, 204, 3, 114, 57, 0, 193, 204, 3, 120, 60, 0, 194, 204, 3, 126, 63, 0, 195, 204, 3, 150, 75, 0, 196, 204, 3, 156, 78, 0, 197, 204, 3, 166, 83, 0, 198, 204, 3, 164, 82, 0, 199, 204, 3, 172, 86, 0, 200, 204, 3, 180, 90, 0, 201, 204, 3, 2, 1, 0, 202, 204, 5, 97, 0, 0, 203, 188, 1, 0, 0, 0, 203, 189, 1, 0, 0, 0, 203, 190, 1, 0, 0, 0, 203, 191, 1, 0, 0, 0, 203, 192, 1, 0, 0, 0, 203, 193, 1, 0, 0, 0, 203, 194, 1, 0, 0, 0, 203, 195, 1, 0, 0, 0, 203, 196, 1, 0, 0, 0, 203, 197, 1, 0, 0, 0, 203, 198, 1, 0, 0, 0, 203, 199, 1, 0, 0, 0, 203, 200, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 208, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 0, 0, 1, 209, 1, 1, 0, 0, 0, 210, 211, 5, 1, 0, 0, 211, 212, 3, 52, 26, 0, 212, 213, 3, 20, 10, 0, 213, 214, 5, 60, 0, 0, 214, 3, 1, 0, 0, 0, 215, 216, 3, 56, 28, 0, 216, 217, 5, 2, 0, 0, 217, 219, 1, 0, 0, 0, 218, 215, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 223, 3, 16, 8, 0, 221, 222, 5, 47, 0, 0, 222, 224, 3, 16, 8, 0, 223, 221, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 230, 1, 0, 0, 0, 227, 230, 3, 18, 9, 0, 228, 230, 3, 6, 3, 0, 229, 218, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 5, 1, 0, 0, 0, 231, 233, 3, 8, 4, 0, 232, 231, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 7, 1, 0, 0, 0, 236, 242, 3, 10, 5, 0, 237, 242, 3, 60, 30, 0, 238, 242, 3, 12, 6, 0, 239, 242, 3, 62, 31, 0, 240, 242, 3, 14, 7, 0, 241, 236, 1, 0, 0, 0, 241, 237, 1, 0, 0, 0, 241, 238, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 9, 1, 0, 0, 0, 243, 244, 3, 56, 28, 0, 244, 245, 5, 2, 0, 0, 245, 246, 3, 62, 31, 0, 246, 11, 1, 0, 0, 0, 247, 248, 3, 52, 26, 0, 248, 249, 5, 62, 0, 0, 249, 250, 3, 52, 26, 0, 250, 13, 1, 0, 0, 0, 251, 252, 7, 0, 0, 0, 252, 15, 1, 0, 0, 0, 253, 254, 3, 62, 31, 0, 254, 17, 1, 0, 0, 0, 255, 256, 5, 96, 0, 0, 256, 19, 1, 0, 0, 0, 257, 258, 5, 63, 0, 0, 258, 259, 3, 4, 2, 0, 259, 21, 1, 0, 0, 0, 260, 262, 3, 52, 26, 0, 261, 263, 3, 20, 10, 0, 262, 261, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 23, 1, 0, 0, 0, 264, 265, 5, 68, 0, 0, 265, 270, 3, 22, 11, 0, 266, 267, 5, 3, 0, 0, 267, 269, 3, 22, 11, 0, 268, 266, 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 274, 5, 69, 0, 0, 274, 25, 1, 0, 0, 0, 275, 276, 5, 93, 0, 0, 276, 27, 1, 0, 0, 0, 277, 279, 5, 68, 0, 0, 278, 280, 3, 26, 13, 0, 279, 278, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 282, 5, 69, 0, 0, 282, 29, 1, 0, 0, 0, 283, 285, 3, 24, 12, 0, 284, 283, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 289, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 290, 3, 66, 33, 0, 290, 292, 3, 52, 26, 0, 291, 293, 3, 28, 14, 0, 292, 291, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, 0, 294, 295, 5, 63, 0, 0, 295, 297, 3, 62, 31, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 5, 60, 0, 0, 299, 31, 1, 0, 0, 0, 300, 301, 5, 86, 0, 0, 301, 302, 3, 52, 26, 0, 302, 303, 5, 60, 0, 0, 303, 33, 1, 0, 0, 0, 304, 305, 5, 4, 0, 0, 305, 306, 3, 52, 26, 0, 306, 307, 5, 63, 0, 0, 307, 308, 3, 62, 31, 0, 308, 309, 5, 60, 0, 0, 309, 35, 1, 0, 0, 0, 310, 312, 3, 24, 12, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 5, 0, 0, 317, 320, 3, 52, 26, 0, 318, 319, 5, 63, 0, 0, 319, 321, 3, 104, 52, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 323, 5, 60, 0, 0, 323, 37, 1, 0, 0, 0, 324, 326, 3, 24, 12, 0, 325, 324, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 330, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 331, 5, 6, 0, 0, 331, 332, 5, 63, 0, 0, 332, 333, 3, 104, 52, 0, 333, 334, 5, 60, 0, 0, 334, 39, 1, 0, 0, 0, 335, 337, 3, 24, 12, 0, 336, 335, 1, 0, 0, 0, 337, 340, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 342, 5, 7, 0, 0, 342, 343, 5, 63, 0, 0, 343, 344, 3, 104, 52, 0, 344, 345, 5, 60, 0, 0, 345, 41, 1, 0, 0, 0, 346, 347, 5, 99, 0, 0, 347, 43, 1, 0, 0, 0, 348, 350, 3, 24, 12, 0, 349, 348, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 355, 3, 184, 92, 0, 355, 356, 5, 63, 0, 0, 356, 357, 3, 62, 31, 0, 357, 358, 5, 60, 0, 0, 358, 45, 1, 0, 0, 0, 359, 360, 5, 92, 0, 0, 360, 47, 1, 0, 0, 0, 361, 370, 3, 46, 23, 0, 362, 366, 5, 51, 0, 0, 363, 365, 3, 58, 29, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 371, 5, 50, 0, 0, 370, 362, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 374, 3, 42, 21, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 49, 1, 0, 0, 0, 375, 376, 5, 92, 0, 0, 376, 51, 1, 0, 0, 0, 377, 378, 5, 92, 0, 0, 378, 53, 1, 0, 0, 0, 379, 380, 5, 92, 0, 0, 380, 55, 1, 0, 0, 0, 381, 382, 5, 92, 0, 0, 382, 57, 1, 0, 0, 0, 383, 384, 5, 92, 0, 0, 384, 59, 1, 0, 0, 0, 385, 386, 5, 92, 0, 0, 386, 388, 5, 64, 0, 0, 387, 389, 3, 64, 32, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 394, 1, 0, 0, 0, 390, 391, 5, 3, 0, 0, 391, 393, 3, 64, 32, 0, 392, 390, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 397, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 398, 5, 65, 0, 0, 398, 61, 1, 0, 0, 0, 399, 407, 3, 182, 91, 0, 400, 407, 5, 92, 0, 0, 401, 407, 5, 93, 0, 0, 402, 407, 5, 94, 0, 0, 403, 407, 3, 186, 93, 0, 404, 407, 3, 60, 30, 0, 405, 407, 3, 104, 52, 0, 406, 399, 1, 0, 0, 0, 406, 400, 1, 0, 0, 0, 406, 401, 1, 0, 0, 0, 406, 402, 1, 0, 0, 0, 406, 403, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 405, 1, 0, 0, 0, 407, 63, 1, 0, 0, 0, 408, 413, 5, 92, 0, 0, 409, 413, 5, 93, 0, 0, 410, 413, 5, 94, 0, 0, 411, 413, 3, 186, 93, 0, 412, 408, 1, 0, 0, 0, 412, 409, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 411, 1, 0, 0, 0, 413, 65, 1, 0, 0, 0, 414, 415, 3, 48, 24, 0, 415, 67, 1, 0, 0, 0, 416, 417, 5, 103, 0, 0, 417, 69, 1, 0, 0, 0, 418, 419, 7, 1, 0, 0, 419, 71, 1, 0, 0, 0, 420, 421, 5, 61, 0, 0, 421, 426, 3, 50, 25, 0, 422, 423, 5, 3, 0, 0, 423, 425, 3, 50, 25, 0, 424, 422, 1, 0, 0, 0, 425, 428, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 427, 73, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 429, 433, 3, 32, 16, 0, 430, 433, 3, 34, 17, 0, 431, 433, 5, 97, 0, 0, 432, 429, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 432, 431, 1, 0, 0, 0, 433, 75, 1, 0, 0, 0, 434, 436, 3, 74, 37, 0, 435, 434, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 77, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 441, 5, 73, 0, 0, 441, 443, 3, 52, 26, 0, 442, 444, 3, 72, 36, 0, 443, 442, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 446, 5, 66, 0, 0, 446, 447, 3, 76, 38, 0, 447, 448, 5, 67, 0, 0, 448, 79, 1, 0, 0, 0, 449, 454, 3, 30, 15, 0, 450, 454, 3, 82, 41, 0, 451, 454, 3, 68, 34, 0, 452, 454, 5, 97, 0, 0, 453, 449, 1, 0, 0, 0, 453, 450, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 81, 1, 0, 0, 0, 455, 457, 3, 24, 12, 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 461, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 462, 3, 66, 33, 0, 462, 463, 3, 52, 26, 0, 463, 464, 5, 64, 0, 0, 464, 465, 3, 84, 42, 0, 465, 467, 5, 65, 0, 0, 466, 468, 3, 86, 43, 0, 467, 466, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 5, 100, 0, 0, 470, 83, 1, 0, 0, 0, 471, 472, 5, 64, 0, 0, 472, 473, 3, 84, 42, 0, 473, 474, 5, 65, 0, 0, 474, 477, 1, 0, 0, 0, 475, 477, 8, 2, 0, 0, 476, 471, 1, 0, 0, 0, 476, 475, 1, 0, 0, 0, 477, 480, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 85, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 482, 5, 61, 0, 0, 482, 483, 5, 92, 0, 0, 483, 87, 1, 0, 0, 0, 484, 486, 3, 80, 40, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 89, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 492, 3, 24, 12, 0, 491, 490, 1, 0, 0, 0, 492, 495, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 496, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 496, 497, 5, 74, 0, 0, 497, 499, 3, 52, 26, 0, 498, 500, 3, 72, 36, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 5, 66, 0, 0, 502, 503, 3, 88, 44, 0, 503, 504, 5, 67, 0, 0, 504, 91, 1, 0, 0, 0, 505, 506, 3, 66, 33, 0, 506, 507, 3, 52, 26, 0, 507, 508, 5, 60, 0, 0, 508, 93, 1, 0, 0, 0, 509, 510, 5, 89, 0, 0, 510, 511, 3, 52, 26, 0, 511, 512, 5, 60, 0, 0, 512, 95, 1, 0, 0, 0, 513, 517, 3, 92, 46, 0, 514, 517, 3, 94, 47, 0, 515, 517, 5, 97, 0, 0, 516, 513, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 516, 515, 1, 0, 0, 0, 517, 97, 1, 0, 0, 0, 518, 520, 3, 96, 48, 0, 519, 518, 1, 0, 0, 0, 520, 523, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 99, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 524, 525, 5, 87, 0, 0, 525, 526, 3, 52, 26, 0, 526, 527, 5, 66, 0, 0, 527, 528, 3, 98, 49, 0, 528, 529, 5, 67, 0, 0, 529, 101, 1, 0, 0, 0, 530, 531, 3, 62, 31, 0, 531, 103, 1, 0, 0, 0, 532, 533, 5, 66, 0, 0, 533, 538, 3, 102, 51, 0, 534, 535, 5, 3, 0, 0, 535, 537, 3, 102, 51, 0, 536, 534, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 541, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 542, 5, 67, 0, 0, 542, 105, 1, 0, 0, 0, 543, 544, 5, 90, 0, 0, 544, 545, 5, 63, 0, 0, 545, 546, 3, 52, 26, 0, 546, 547, 5, 60, 0, 0, 547, 107, 1, 0, 0, 0, 548, 550, 3, 24, 12, 0, 549, 548, 1, 0, 0, 0, 550, 553, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 552, 554, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 554, 555, 3, 182, 91, 0, 555, 556, 5, 63, 0, 0, 556, 557, 3, 70, 35, 0, 557, 558, 5, 60, 0, 0, 558, 109, 1, 0, 0, 0, 559, 564, 3, 106, 53, 0, 560, 564, 3, 108, 54, 0, 561, 564, 3, 36, 18, 0, 562, 564, 5, 97, 0, 0, 563, 559, 1, 0, 0, 0, 563, 560, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 563, 562, 1, 0, 0, 0, 564, 111, 1, 0, 0, 0, 565, 567, 3, 110, 55, 0, 566, 565, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 113, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 573, 3, 24, 12, 0, 572, 571, 1, 0, 0, 0, 573, 576, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 577, 578, 5, 75, 0, 0, 578, 580, 3, 52, 26, 0, 579, 581, 3, 72, 36, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 583, 5, 66, 0, 0, 583, 584, 3, 112, 56, 0, 584, 585, 5, 67, 0, 0, 585, 115, 1, 0, 0, 0, 586, 594, 3, 106, 53, 0, 587, 594, 3, 108, 54, 0, 588, 594, 3, 36, 18, 0, 589, 594, 3, 38, 19, 0, 590, 594, 3, 40, 20, 0, 591, 594, 3, 44, 22, 0, 592, 594, 5, 97, 0, 0, 593, 586, 1, 0, 0, 0, 593, 587, 1, 0, 0, 0, 593, 588, 1, 0, 0, 0, 593, 589, 1, 0, 0, 0, 593, 590, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 592, 1, 0, 0, 0, 594, 117, 1, 0, 0, 0, 595, 597, 3, 116, 58, 0, 596, 595, 1, 0, 0, 0, 597, 600, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 119, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 601, 603, 3, 24, 12, 0, 602, 601, 1, 0, 0, 0, 603, 606, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 607, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 607, 608, 5, 76, 0, 0, 608, 610, 3, 52, 26, 0, 609, 611, 3, 72, 36, 0, 610, 609, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 613, 5, 66, 0, 0, 613, 614, 3, 118, 59, 0, 614, 615, 5, 67, 0, 0, 615, 121, 1, 0, 0, 0, 616, 619, 3, 106, 53, 0, 617, 619, 5, 97, 0, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 123, 1, 0, 0, 0, 620, 622, 3, 122, 61, 0, 621, 620, 1, 0, 0, 0, 622, 625, 1, 0, 0, 0, 623, 621, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 125, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 626, 627, 5, 77, 0, 0, 627, 629, 3, 52, 26, 0, 628, 630, 3, 72, 36, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 5, 66, 0, 0, 632, 633, 3, 124, 62, 0, 633, 634, 5, 67, 0, 0, 634, 127, 1, 0, 0, 0, 635, 636, 7, 3, 0, 0, 636, 129, 1, 0, 0, 0, 637, 638, 3, 128, 64, 0, 638, 639, 5, 63, 0, 0, 639, 640, 3, 62, 31, 0, 640, 641, 5, 60, 0, 0, 641, 131, 1, 0, 0, 0, 642, 644, 3, 24, 12, 0, 643, 642, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 648, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 649, 5, 80, 0, 0, 649, 650, 3, 66, 33, 0, 650, 651, 3, 52, 26, 0, 651, 652, 5, 60, 0, 0, 652, 133, 1, 0, 0, 0, 653, 657, 3, 130, 65, 0, 654, 657, 3, 132, 66, 0, 655, 657, 5, 97, 0, 0, 656, 653, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 656, 655, 1, 0, 0, 0, 657, 135, 1, 0, 0, 0, 658, 660, 3, 134, 67, 0, 659, 658, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 137, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 665, 5, 79, 0, 0, 665, 666, 3, 52, 26, 0, 666, 667, 5, 66, 0, 0, 667, 668, 3, 136, 68, 0, 668, 669, 5, 67, 0, 0, 669, 139, 1, 0, 0, 0, 670, 676, 3, 106, 53, 0, 671, 676, 3, 108, 54, 0, 672, 676, 3, 36, 18, 0, 673, 676, 3, 138, 69, 0, 674, 676, 5, 97, 0, 0, 675, 670, 1, 0, 0, 0, 675, 671, 1, 0, 0, 0, 675, 672, 1, 0, 0, 0, 675, 673, 1, 0, 0, 0, 675, 674, 1, 0, 0, 0, 676, 141, 1, 0, 0, 0, 677, 679, 3, 140, 70, 0, 678, 677, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 143, 1, 0, 0, 0, 682, 680, 1, 0, 0, 0, 683, 685, 3, 24, 12, 0, 684, 683, 1, 0, 0, 0, 685, 688, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 687, 689, 1, 0, 0, 0, 688, 686, 1, 0, 0, 0, 689, 690, 5, 78, 0, 0, 690, 692, 3, 52, 26, 0, 691, 693, 3, 72, 36, 0, 692, 691, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 5, 66, 0, 0, 695, 696, 3, 142, 71, 0, 696, 697, 5, 67, 0, 0, 697, 145, 1, 0, 0, 0, 698, 702, 3, 108, 54, 0, 699, 702, 5, 97, 0, 0, 700, 702, 3, 44, 22, 0, 701, 698, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 701, 700, 1, 0, 0, 0, 702, 147, 1, 0, 0, 0, 703, 705, 3, 146, 73, 0, 704, 703, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 149, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 711, 3, 24, 12, 0, 710, 709, 1, 0, 0, 0, 711, 714, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 713, 715, 1, 0, 0, 0, 714, 712, 1, 0, 0, 0, 715, 716, 5, 82, 0, 0, 716, 718, 3, 52, 26, 0, 717, 719, 3, 72, 36, 0, 718, 717, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 5, 66, 0, 0, 721, 722, 3, 148, 74, 0, 722, 723, 5, 67, 0, 0, 723, 151, 1, 0, 0, 0, 724, 727, 3, 108, 54, 0, 725, 727, 5, 97, 0, 0, 726, 724, 1, 0, 0, 0, 726, 725, 1, 0, 0, 0, 727, 153, 1, 0, 0, 0, 728, 730, 3, 152, 76, 0, 729, 728, 1, 0, 0, 0, 730, 733, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 155, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 734, 736, 3, 24, 12, 0, 735, 734, 1, 0, 0, 0, 736, 739, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 738, 740, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 740, 741, 5, 81, 0, 0, 741, 743, 3, 52, 26, 0, 742, 744, 3, 72, 36, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 746, 5, 66, 0, 0, 746, 747, 3, 154, 77, 0, 747, 748, 5, 67, 0, 0, 748, 157, 1, 0, 0, 0, 749, 751, 3, 24, 12, 0, 750, 749, 1, 0, 0, 0, 751, 754, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 752, 750, 1, 0, 0, 0, 753, 755, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 755, 756, 3, 66, 33, 0, 756, 757, 3, 52, 26, 0, 757, 758, 5, 60, 0, 0, 758, 159, 1, 0, 0, 0, 759, 762, 3, 158, 79, 0, 760, 762, 5, 97, 0, 0, 761, 759, 1, 0, 0, 0, 761, 760, 1, 0, 0, 0, 762, 161, 1, 0, 0, 0, 763, 765, 3, 160, 80, 0, 764, 763, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 163, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 771, 3, 24, 12, 0, 770, 769, 1, 0, 0, 0, 771, 774, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 773, 775, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 775, 776, 5, 84, 0, 0, 776, 778, 3, 52, 26, 0, 777, 779, 3, 72, 36, 0, 778, 777, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 5, 66, 0, 0, 781, 782, 3, 162, 81, 0, 782, 783, 5, 67, 0, 0, 783, 165, 1, 0, 0, 0, 784, 786, 3, 24, 12, 0, 785, 784, 1, 0, 0, 0, 786, 789, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 788, 790, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 791, 5, 83, 0, 0, 791, 793, 3, 52, 26, 0, 792, 794, 3, 72, 36, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 796, 5, 66, 0, 0, 796, 797, 3, 162, 81, 0, 797, 798, 5, 67, 0, 0, 798, 167, 1, 0, 0, 0, 799, 801, 3, 24, 12, 0, 800, 799, 1, 0, 0, 0, 801, 804, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 805, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 805, 806, 3, 52, 26, 0, 806, 807, 5, 60, 0, 0, 807, 810, 1, 0, 0, 0, 808, 810, 5, 97, 0, 0, 809, 802, 1, 0, 0, 0, 809, 808, 1, 0, 0, 0, 810, 169, 1, 0, 0, 0, 811, 813, 3, 168, 84, 0, 812, 811, 1, 0, 0, 0, 813, 816, 1, 0, 0, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 171, 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 817, 818, 5, 85, 0, 0, 818, 819, 3, 52, 26, 0, 819, 820, 5, 66, 0, 0, 820, 821, 3, 170, 85, 0, 821, 822, 5, 67, 0, 0, 822, 173, 1, 0, 0, 0, 823, 826, 3, 52, 26, 0, 824, 825, 5, 63, 0, 0, 825, 827, 3, 62, 31, 0, 826, 824, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 5, 60, 0, 0, 829, 175, 1, 0, 0, 0, 830, 833, 3, 174, 87, 0, 831, 833, 5, 97, 0, 0, 832, 830, 1, 0, 0, 0, 832, 831, 1, 0, 0, 0, 833, 177, 1, 0, 0, 0, 834, 836, 3, 176, 88, 0, 835, 834, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 179, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 91, 0, 0, 841, 842, 3, 52, 26, 0, 842, 843, 5, 66, 0, 0, 843, 844, 3, 178, 89, 0, 844, 845, 5, 67, 0, 0, 845, 181, 1, 0, 0, 0, 846, 847, 7, 4, 0, 0, 847, 183, 1, 0, 0, 0, 848, 849, 7, 5, 0, 0, 849, 185, 1, 0, 0, 0, 850, 851, 7, 6, 0, 0, 851, 187, 1, 0, 0, 0, 80, 203, 205, 218, 225, 229, 234, 241, 262, 270, 279, 286, 292, 296, 313, 320, 327, 338, 351, 366, 370, 373, 388, 394, 406, 412, 426, 432, 437, 443, 453, 458, 467, 476, 478, 487, 493, 499, 516, 521, 538, 551, 563, 568, 574, 580, 593, 598, 604, 610, 618, 623, 629, 645, 656, 661, 675, 680, 686, 692, 701, 706, 712, 718, 726, 731, 737, 743, 752, 761, 766, 772, 778, 787, 793, 802, 809, 814, 826, 832, 837] \ No newline at end of file diff --git a/sources/SIGParser/.antlr/SIG.tokens b/sources/SIGParser/.antlr/SIG.tokens index 82b9de218..31b62ad92 100644 --- a/sources/SIGParser/.antlr/SIG.tokens +++ b/sources/SIGParser/.antlr/SIG.tokens @@ -42,23 +42,23 @@ T__40=41 T__41=42 T__42=43 T__43=44 -T__44=45 -OR=46 -AND=47 -PIPE=48 -EQ=49 -NEQ=50 -GT=51 -LT=52 -GTEQ=53 -LTEQ=54 -PLUS=55 -MINUS=56 -DIV=57 -MOD=58 -POW=59 -NOT=60 -SCOL=61 +OR=45 +AND=46 +PIPE=47 +EQ=48 +NEQ=49 +GT=50 +LT=51 +GTEQ=52 +LTEQ=53 +PLUS=54 +MINUS=55 +DIV=56 +MOD=57 +POW=58 +NOT=59 +SCOL=60 +COLON=61 DOT=62 ASSIGN=63 OPAR=64 @@ -97,9 +97,10 @@ RAWEXPR=96 COMMENT=97 SPACE=98 POINTER=99 -INSERT_START=100 -INSERT_END=101 -INSERT_BLOCK=102 +FUNC_BODY=100 +INSERT_START=101 +INSERT_END=102 +INSERT_BLOCK=103 'const'=1 '::'=2 ','=3 @@ -107,60 +108,60 @@ INSERT_BLOCK=102 'define'=5 'rtv'=6 'blend'=7 -':'=8 -'launch'=9 -'entry'=10 -'num_threads'=11 -'max_dispatch_grid'=12 -'input'=13 -'compute'=14 -'vertex'=15 -'pixel'=16 -'domain'=17 -'hull'=18 -'geometry'=19 -'miss'=20 -'closest_hit'=21 -'any_hit'=22 -'raygen'=23 -'amplification'=24 -'mesh'=25 -'shader'=26 -'ds'=27 -'cull'=28 -'depth_func'=29 -'depth_write'=30 -'conservative'=31 -'depth_bias'=32 -'depth_bias_clamp'=33 -'slope_scaled_depth_bias'=34 -'enable_depth'=35 -'topology'=36 -'enable_stencil'=37 -'stencil_func'=38 -'stencil_pass_op'=39 -'stencil_read_mask'=40 -'stencil_write_mask'=41 -'recursion_depth'=42 -'payload'=43 -'per_material'=44 -'local'=45 -'||'=46 -'&&'=47 -'|'=48 -'=='=49 -'!='=50 -'>'=51 -'<'=52 -'>='=53 -'<='=54 -'+'=55 -'-'=56 -'/'=57 -'%'=58 -'^'=59 -'!'=60 -';'=61 +'launch'=8 +'entry'=9 +'num_threads'=10 +'max_dispatch_grid'=11 +'input'=12 +'compute'=13 +'vertex'=14 +'pixel'=15 +'domain'=16 +'hull'=17 +'geometry'=18 +'miss'=19 +'closest_hit'=20 +'any_hit'=21 +'raygen'=22 +'amplification'=23 +'mesh'=24 +'shader'=25 +'ds'=26 +'cull'=27 +'depth_func'=28 +'depth_write'=29 +'conservative'=30 +'depth_bias'=31 +'depth_bias_clamp'=32 +'slope_scaled_depth_bias'=33 +'enable_depth'=34 +'topology'=35 +'enable_stencil'=36 +'stencil_func'=37 +'stencil_pass_op'=38 +'stencil_read_mask'=39 +'stencil_write_mask'=40 +'recursion_depth'=41 +'payload'=42 +'per_material'=43 +'local'=44 +'||'=45 +'&&'=46 +'|'=47 +'=='=48 +'!='=49 +'>'=50 +'<'=51 +'>='=52 +'<='=53 +'+'=54 +'-'=55 +'/'=56 +'%'=57 +'^'=58 +'!'=59 +';'=60 +':'=61 '.'=62 '='=63 '('=64 @@ -192,5 +193,5 @@ INSERT_BLOCK=102 'root'=90 'enum'=91 '*'=99 -'%{'=100 -'}%'=101 +'%{'=101 +'}%'=102 diff --git a/sources/SIGParser/.antlr/SIGBaseListener.h b/sources/SIGParser/.antlr/SIGBaseListener.h index 7e60c53b8..e0c3f5edd 100644 --- a/sources/SIGParser/.antlr/SIGBaseListener.h +++ b/sources/SIGParser/.antlr/SIGBaseListener.h @@ -139,6 +139,15 @@ class SIGBaseListener : public SIGListener { virtual void enterTable_stat(SIGParser::Table_statContext * /*ctx*/) override { } virtual void exitTable_stat(SIGParser::Table_statContext * /*ctx*/) override { } + virtual void enterFunction_definition(SIGParser::Function_definitionContext * /*ctx*/) override { } + virtual void exitFunction_definition(SIGParser::Function_definitionContext * /*ctx*/) override { } + + virtual void enterFunction_params(SIGParser::Function_paramsContext * /*ctx*/) override { } + virtual void exitFunction_params(SIGParser::Function_paramsContext * /*ctx*/) override { } + + virtual void enterFunction_semantic(SIGParser::Function_semanticContext * /*ctx*/) override { } + virtual void exitFunction_semantic(SIGParser::Function_semanticContext * /*ctx*/) override { } + virtual void enterTable_block(SIGParser::Table_blockContext * /*ctx*/) override { } virtual void exitTable_block(SIGParser::Table_blockContext * /*ctx*/) override { } diff --git a/sources/SIGParser/.antlr/SIGBaseVisitor.h b/sources/SIGParser/.antlr/SIGBaseVisitor.h index de3b9c401..e904d1efe 100644 --- a/sources/SIGParser/.antlr/SIGBaseVisitor.h +++ b/sources/SIGParser/.antlr/SIGBaseVisitor.h @@ -179,6 +179,18 @@ class SIGBaseVisitor : public SIGVisitor { return visitChildren(ctx); } + virtual std::any visitFunction_definition(SIGParser::Function_definitionContext *ctx) override { + return visitChildren(ctx); + } + + virtual std::any visitFunction_params(SIGParser::Function_paramsContext *ctx) override { + return visitChildren(ctx); + } + + virtual std::any visitFunction_semantic(SIGParser::Function_semanticContext *ctx) override { + return visitChildren(ctx); + } + virtual std::any visitTable_block(SIGParser::Table_blockContext *ctx) override { return visitChildren(ctx); } diff --git a/sources/SIGParser/.antlr/SIGLexer.cpp b/sources/SIGParser/.antlr/SIGLexer.cpp index 66af13cf8..7013d2805 100644 --- a/sources/SIGParser/.antlr/SIGLexer.cpp +++ b/sources/SIGParser/.antlr/SIGLexer.cpp @@ -53,15 +53,16 @@ void siglexerLexerInitialize() { "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", - "T__41", "T__42", "T__43", "T__44", "OR", "AND", "PIPE", "EQ", "NEQ", - "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS", "DIV", "MOD", "POW", - "NOT", "SCOL", "DOT", "ASSIGN", "OPAR", "CPAR", "OBRACE", "CBRACE", + "T__41", "T__42", "T__43", "OR", "AND", "PIPE", "EQ", "NEQ", "GT", + "LT", "GTEQ", "LTEQ", "PLUS", "MINUS", "DIV", "MOD", "POW", "NOT", + "SCOL", "COLON", "DOT", "ASSIGN", "OPAR", "CPAR", "OBRACE", "CBRACE", "OSBRACE", "CSBRACE", "TRUE", "FALSE", "LOG", "LAYOUT", "STRUCT", "COMPUTE_PSO", "GRAPHICS_PSO", "RAYTRACE_PSO", "WORKGRAPH_PSO", "NODE", "NODE_OUTPUT", "RAYTRACE_RAYGEN", "RAYTRACE_PASS", "PASS", "VIEW", "PIPELINE", "SLOT", "RT", "RTV", "DSV", "ROOTSIG", "ENUM", "ID", "INT_SCALAR", "FLOAT_SCALAR", "STRING", "RAWEXPR", "COMMENT", "SPACE", "POINTER", - "INSERT_START", "INSERT_END", "INSERT_BLOCK" + "FUNC_BODY", "FUNC_BLOCK", "FUNC_BLOCK_TAIL", "INSERT_START", "INSERT_END", + "INSERT_BLOCK" }, std::vector{ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -71,38 +72,38 @@ void siglexerLexerInitialize() { }, std::vector{ "", "'const'", "'::'", "','", "'Sampler'", "'define'", "'rtv'", "'blend'", - "':'", "'launch'", "'entry'", "'num_threads'", "'max_dispatch_grid'", - "'input'", "'compute'", "'vertex'", "'pixel'", "'domain'", "'hull'", - "'geometry'", "'miss'", "'closest_hit'", "'any_hit'", "'raygen'", - "'amplification'", "'mesh'", "'shader'", "'ds'", "'cull'", "'depth_func'", - "'depth_write'", "'conservative'", "'depth_bias'", "'depth_bias_clamp'", - "'slope_scaled_depth_bias'", "'enable_depth'", "'topology'", "'enable_stencil'", - "'stencil_func'", "'stencil_pass_op'", "'stencil_read_mask'", "'stencil_write_mask'", + "'launch'", "'entry'", "'num_threads'", "'max_dispatch_grid'", "'input'", + "'compute'", "'vertex'", "'pixel'", "'domain'", "'hull'", "'geometry'", + "'miss'", "'closest_hit'", "'any_hit'", "'raygen'", "'amplification'", + "'mesh'", "'shader'", "'ds'", "'cull'", "'depth_func'", "'depth_write'", + "'conservative'", "'depth_bias'", "'depth_bias_clamp'", "'slope_scaled_depth_bias'", + "'enable_depth'", "'topology'", "'enable_stencil'", "'stencil_func'", + "'stencil_pass_op'", "'stencil_read_mask'", "'stencil_write_mask'", "'recursion_depth'", "'payload'", "'per_material'", "'local'", "'||'", "'&&'", "'|'", "'=='", "'!='", "'>'", "'<'", "'>='", "'<='", "'+'", - "'-'", "'/'", "'%'", "'^'", "'!'", "';'", "'.'", "'='", "'('", "')'", - "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'log'", "'layout'", + "'-'", "'/'", "'%'", "'^'", "'!'", "';'", "':'", "'.'", "'='", "'('", + "')'", "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'log'", "'layout'", "'struct'", "'ComputePSO'", "'GraphicsPSO'", "'RaytracePSO'", "'WorkgraphPSO'", "'Node'", "'NodeOutput'", "'RaytraceRaygen'", "'RaytracePass'", "'PassNode'", "'PassView'", "'Pipeline'", "'slot'", "'rt'", "'RTV'", "'DSV'", "'root'", - "'enum'", "", "", "", "", "", "", "", "'*'", "'%{'", "'}%'" + "'enum'", "", "", "", "", "", "", "", "'*'", "", "'%{'", "'}%'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "OR", "AND", "PIPE", - "EQ", "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS", "DIV", "MOD", - "POW", "NOT", "SCOL", "DOT", "ASSIGN", "OPAR", "CPAR", "OBRACE", "CBRACE", - "OSBRACE", "CSBRACE", "TRUE", "FALSE", "LOG", "LAYOUT", "STRUCT", - "COMPUTE_PSO", "GRAPHICS_PSO", "RAYTRACE_PSO", "WORKGRAPH_PSO", "NODE", - "NODE_OUTPUT", "RAYTRACE_RAYGEN", "RAYTRACE_PASS", "PASS", "VIEW", - "PIPELINE", "SLOT", "RT", "RTV", "DSV", "ROOTSIG", "ENUM", "ID", "INT_SCALAR", - "FLOAT_SCALAR", "STRING", "RAWEXPR", "COMMENT", "SPACE", "POINTER", - "INSERT_START", "INSERT_END", "INSERT_BLOCK" + "", "", "", "", "", "", "", "", "", "", "", "OR", "AND", "PIPE", "EQ", + "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS", "DIV", "MOD", + "POW", "NOT", "SCOL", "COLON", "DOT", "ASSIGN", "OPAR", "CPAR", "OBRACE", + "CBRACE", "OSBRACE", "CSBRACE", "TRUE", "FALSE", "LOG", "LAYOUT", + "STRUCT", "COMPUTE_PSO", "GRAPHICS_PSO", "RAYTRACE_PSO", "WORKGRAPH_PSO", + "NODE", "NODE_OUTPUT", "RAYTRACE_RAYGEN", "RAYTRACE_PASS", "PASS", + "VIEW", "PIPELINE", "SLOT", "RT", "RTV", "DSV", "ROOTSIG", "ENUM", + "ID", "INT_SCALAR", "FLOAT_SCALAR", "STRING", "RAWEXPR", "COMMENT", + "SPACE", "POINTER", "FUNC_BODY", "INSERT_START", "INSERT_END", "INSERT_BLOCK" } ); static const int32_t serializedATNSegment[] = { - 4,0,102,944,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,0,103,997,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2, 14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2, 21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2, @@ -116,300 +117,321 @@ void siglexerLexerInitialize() { 77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2, 84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2, 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, - 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,1,0,1,0,1,0,1,0,1,0,1,0,1,1, - 1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1, - 4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11, - 1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12, - 1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14, - 1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16, - 1,16,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, - 1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, - 1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22, - 1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23, - 1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25, - 1,25,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104, + 7,104,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,1,3,1,3,1,3,1,3,1,3, + 1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1, + 6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9, + 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11, + 1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,13,1,13, + 1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15, + 1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17, + 1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19, + 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,24, + 1,24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26, + 1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30, 1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, - 1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32, - 1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33, - 1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33, - 1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34, - 1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36, - 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39, - 1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39, - 1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40, - 1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41, - 1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42, - 1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, - 1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1,46,1,47, - 1,47,1,48,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,52, - 1,53,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,59, - 1,59,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63,1,64,1,64,1,65,1,65,1,66, - 1,66,1,67,1,67,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70, - 1,70,1,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73, - 1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74, - 1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75, - 1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77, - 1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78, - 1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79, - 1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80, - 1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81, - 1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83, - 1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85, - 1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88, - 1,88,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,5,91, - 865,8,91,10,91,12,91,868,9,91,1,92,4,92,871,8,92,11,92,12,92,872,1,93, - 4,93,876,8,93,11,93,12,93,877,1,93,1,93,5,93,882,8,93,10,93,12,93,885, - 9,93,1,93,1,93,4,93,889,8,93,11,93,12,93,890,3,93,893,8,93,1,94,1,94, - 1,94,1,94,5,94,899,8,94,10,94,12,94,902,9,94,1,94,1,94,1,95,1,95,5,95, - 908,8,95,10,95,12,95,911,9,95,1,95,1,95,1,96,1,96,5,96,917,8,96,10,96, - 12,96,920,9,96,1,96,1,96,1,97,1,97,1,97,1,97,1,98,1,98,1,99,1,99,1,99, - 1,100,1,100,1,100,1,101,1,101,5,101,938,8,101,10,101,12,101,941,9,101, - 1,101,1,101,1,939,0,102,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10, - 21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43, - 22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33, - 67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89, - 45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111, + 1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32, + 1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32, + 1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33, + 1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35, + 1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36, + 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39, + 1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40, + 1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41, + 1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,45, + 1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,50,1,50, + 1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,56,1,56, + 1,57,1,57,1,58,1,58,1,59,1,59,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63, + 1,64,1,64,1,65,1,65,1,66,1,66,1,67,1,67,1,68,1,68,1,69,1,69,1,69,1,69, + 1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75, + 1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77, + 1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79, + 1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80, + 1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81, + 1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82, + 1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84, + 1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87, + 1,87,1,87,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90, + 1,90,1,90,1,91,1,91,5,91,871,8,91,10,91,12,91,874,9,91,1,92,4,92,877, + 8,92,11,92,12,92,878,1,93,4,93,882,8,93,11,93,12,93,883,1,93,1,93,5,93, + 888,8,93,10,93,12,93,891,9,93,1,93,1,93,4,93,895,8,93,11,93,12,93,896, + 3,93,899,8,93,1,94,1,94,1,94,1,94,5,94,905,8,94,10,94,12,94,908,9,94, + 1,94,1,94,1,95,1,95,5,95,914,8,95,10,95,12,95,917,9,95,1,95,1,95,1,96, + 1,96,5,96,923,8,96,10,96,12,96,926,9,96,1,96,1,96,1,97,1,97,1,97,1,97, + 1,98,1,98,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,101,1,101,1,101,1,101, + 1,101,5,101,948,8,101,10,101,12,101,951,9,101,1,101,1,101,1,101,1,101, + 5,101,957,8,101,10,101,12,101,960,9,101,1,101,1,101,1,101,1,101,1,101, + 1,101,5,101,968,8,101,10,101,12,101,971,9,101,1,101,1,101,1,101,5,101, + 976,8,101,10,101,12,101,979,9,101,1,101,1,101,1,102,1,102,1,102,1,103, + 1,103,1,103,1,104,1,104,5,104,991,8,104,10,104,12,104,994,9,104,1,104, + 1,104,2,958,992,0,105,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21, + 11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22, + 45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67, + 34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45, + 91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111, 56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131, 66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171, 86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191, - 96,193,97,195,98,197,99,199,100,201,101,203,102,1,0,7,3,0,65,90,95,95, - 97,122,4,0,48,57,65,90,95,95,97,122,1,0,48,57,3,0,10,10,13,13,34,34,1, - 0,96,96,2,0,10,10,13,13,3,0,9,10,13,13,32,32,954,0,1,1,0,0,0,0,3,1,0, - 0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15, - 1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0, - 0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0, - 0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47, - 1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0, - 0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0, - 0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79, - 1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0, - 0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0, - 0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0, - 0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0, - 0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0, - 0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0, - 0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0, - 0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0, - 0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0, - 0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0, - 0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0, - 0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0, - 0,201,1,0,0,0,0,203,1,0,0,0,1,205,1,0,0,0,3,211,1,0,0,0,5,214,1,0,0,0, - 7,216,1,0,0,0,9,224,1,0,0,0,11,231,1,0,0,0,13,235,1,0,0,0,15,241,1,0, - 0,0,17,243,1,0,0,0,19,250,1,0,0,0,21,256,1,0,0,0,23,268,1,0,0,0,25,286, - 1,0,0,0,27,292,1,0,0,0,29,300,1,0,0,0,31,307,1,0,0,0,33,313,1,0,0,0,35, - 320,1,0,0,0,37,325,1,0,0,0,39,334,1,0,0,0,41,339,1,0,0,0,43,351,1,0,0, - 0,45,359,1,0,0,0,47,366,1,0,0,0,49,380,1,0,0,0,51,385,1,0,0,0,53,392, - 1,0,0,0,55,395,1,0,0,0,57,400,1,0,0,0,59,411,1,0,0,0,61,423,1,0,0,0,63, - 436,1,0,0,0,65,447,1,0,0,0,67,464,1,0,0,0,69,488,1,0,0,0,71,501,1,0,0, - 0,73,510,1,0,0,0,75,525,1,0,0,0,77,538,1,0,0,0,79,554,1,0,0,0,81,572, - 1,0,0,0,83,591,1,0,0,0,85,607,1,0,0,0,87,615,1,0,0,0,89,628,1,0,0,0,91, - 634,1,0,0,0,93,637,1,0,0,0,95,640,1,0,0,0,97,642,1,0,0,0,99,645,1,0,0, - 0,101,648,1,0,0,0,103,650,1,0,0,0,105,652,1,0,0,0,107,655,1,0,0,0,109, - 658,1,0,0,0,111,660,1,0,0,0,113,662,1,0,0,0,115,664,1,0,0,0,117,666,1, - 0,0,0,119,668,1,0,0,0,121,670,1,0,0,0,123,672,1,0,0,0,125,674,1,0,0,0, - 127,676,1,0,0,0,129,678,1,0,0,0,131,680,1,0,0,0,133,682,1,0,0,0,135,684, - 1,0,0,0,137,686,1,0,0,0,139,688,1,0,0,0,141,693,1,0,0,0,143,699,1,0,0, - 0,145,703,1,0,0,0,147,710,1,0,0,0,149,717,1,0,0,0,151,728,1,0,0,0,153, - 740,1,0,0,0,155,752,1,0,0,0,157,765,1,0,0,0,159,770,1,0,0,0,161,781,1, - 0,0,0,163,796,1,0,0,0,165,809,1,0,0,0,167,818,1,0,0,0,169,827,1,0,0,0, - 171,836,1,0,0,0,173,841,1,0,0,0,175,844,1,0,0,0,177,848,1,0,0,0,179,852, - 1,0,0,0,181,857,1,0,0,0,183,862,1,0,0,0,185,870,1,0,0,0,187,892,1,0,0, - 0,189,894,1,0,0,0,191,905,1,0,0,0,193,914,1,0,0,0,195,923,1,0,0,0,197, - 927,1,0,0,0,199,929,1,0,0,0,201,932,1,0,0,0,203,935,1,0,0,0,205,206,5, - 99,0,0,206,207,5,111,0,0,207,208,5,110,0,0,208,209,5,115,0,0,209,210, - 5,116,0,0,210,2,1,0,0,0,211,212,5,58,0,0,212,213,5,58,0,0,213,4,1,0,0, - 0,214,215,5,44,0,0,215,6,1,0,0,0,216,217,5,83,0,0,217,218,5,97,0,0,218, - 219,5,109,0,0,219,220,5,112,0,0,220,221,5,108,0,0,221,222,5,101,0,0,222, - 223,5,114,0,0,223,8,1,0,0,0,224,225,5,100,0,0,225,226,5,101,0,0,226,227, - 5,102,0,0,227,228,5,105,0,0,228,229,5,110,0,0,229,230,5,101,0,0,230,10, - 1,0,0,0,231,232,5,114,0,0,232,233,5,116,0,0,233,234,5,118,0,0,234,12, - 1,0,0,0,235,236,5,98,0,0,236,237,5,108,0,0,237,238,5,101,0,0,238,239, - 5,110,0,0,239,240,5,100,0,0,240,14,1,0,0,0,241,242,5,58,0,0,242,16,1, - 0,0,0,243,244,5,108,0,0,244,245,5,97,0,0,245,246,5,117,0,0,246,247,5, - 110,0,0,247,248,5,99,0,0,248,249,5,104,0,0,249,18,1,0,0,0,250,251,5,101, - 0,0,251,252,5,110,0,0,252,253,5,116,0,0,253,254,5,114,0,0,254,255,5,121, - 0,0,255,20,1,0,0,0,256,257,5,110,0,0,257,258,5,117,0,0,258,259,5,109, - 0,0,259,260,5,95,0,0,260,261,5,116,0,0,261,262,5,104,0,0,262,263,5,114, - 0,0,263,264,5,101,0,0,264,265,5,97,0,0,265,266,5,100,0,0,266,267,5,115, - 0,0,267,22,1,0,0,0,268,269,5,109,0,0,269,270,5,97,0,0,270,271,5,120,0, - 0,271,272,5,95,0,0,272,273,5,100,0,0,273,274,5,105,0,0,274,275,5,115, - 0,0,275,276,5,112,0,0,276,277,5,97,0,0,277,278,5,116,0,0,278,279,5,99, - 0,0,279,280,5,104,0,0,280,281,5,95,0,0,281,282,5,103,0,0,282,283,5,114, - 0,0,283,284,5,105,0,0,284,285,5,100,0,0,285,24,1,0,0,0,286,287,5,105, - 0,0,287,288,5,110,0,0,288,289,5,112,0,0,289,290,5,117,0,0,290,291,5,116, - 0,0,291,26,1,0,0,0,292,293,5,99,0,0,293,294,5,111,0,0,294,295,5,109,0, - 0,295,296,5,112,0,0,296,297,5,117,0,0,297,298,5,116,0,0,298,299,5,101, - 0,0,299,28,1,0,0,0,300,301,5,118,0,0,301,302,5,101,0,0,302,303,5,114, - 0,0,303,304,5,116,0,0,304,305,5,101,0,0,305,306,5,120,0,0,306,30,1,0, - 0,0,307,308,5,112,0,0,308,309,5,105,0,0,309,310,5,120,0,0,310,311,5,101, - 0,0,311,312,5,108,0,0,312,32,1,0,0,0,313,314,5,100,0,0,314,315,5,111, - 0,0,315,316,5,109,0,0,316,317,5,97,0,0,317,318,5,105,0,0,318,319,5,110, - 0,0,319,34,1,0,0,0,320,321,5,104,0,0,321,322,5,117,0,0,322,323,5,108, - 0,0,323,324,5,108,0,0,324,36,1,0,0,0,325,326,5,103,0,0,326,327,5,101, - 0,0,327,328,5,111,0,0,328,329,5,109,0,0,329,330,5,101,0,0,330,331,5,116, - 0,0,331,332,5,114,0,0,332,333,5,121,0,0,333,38,1,0,0,0,334,335,5,109, - 0,0,335,336,5,105,0,0,336,337,5,115,0,0,337,338,5,115,0,0,338,40,1,0, - 0,0,339,340,5,99,0,0,340,341,5,108,0,0,341,342,5,111,0,0,342,343,5,115, - 0,0,343,344,5,101,0,0,344,345,5,115,0,0,345,346,5,116,0,0,346,347,5,95, - 0,0,347,348,5,104,0,0,348,349,5,105,0,0,349,350,5,116,0,0,350,42,1,0, - 0,0,351,352,5,97,0,0,352,353,5,110,0,0,353,354,5,121,0,0,354,355,5,95, - 0,0,355,356,5,104,0,0,356,357,5,105,0,0,357,358,5,116,0,0,358,44,1,0, - 0,0,359,360,5,114,0,0,360,361,5,97,0,0,361,362,5,121,0,0,362,363,5,103, - 0,0,363,364,5,101,0,0,364,365,5,110,0,0,365,46,1,0,0,0,366,367,5,97,0, - 0,367,368,5,109,0,0,368,369,5,112,0,0,369,370,5,108,0,0,370,371,5,105, - 0,0,371,372,5,102,0,0,372,373,5,105,0,0,373,374,5,99,0,0,374,375,5,97, - 0,0,375,376,5,116,0,0,376,377,5,105,0,0,377,378,5,111,0,0,378,379,5,110, - 0,0,379,48,1,0,0,0,380,381,5,109,0,0,381,382,5,101,0,0,382,383,5,115, - 0,0,383,384,5,104,0,0,384,50,1,0,0,0,385,386,5,115,0,0,386,387,5,104, - 0,0,387,388,5,97,0,0,388,389,5,100,0,0,389,390,5,101,0,0,390,391,5,114, - 0,0,391,52,1,0,0,0,392,393,5,100,0,0,393,394,5,115,0,0,394,54,1,0,0,0, - 395,396,5,99,0,0,396,397,5,117,0,0,397,398,5,108,0,0,398,399,5,108,0, - 0,399,56,1,0,0,0,400,401,5,100,0,0,401,402,5,101,0,0,402,403,5,112,0, - 0,403,404,5,116,0,0,404,405,5,104,0,0,405,406,5,95,0,0,406,407,5,102, - 0,0,407,408,5,117,0,0,408,409,5,110,0,0,409,410,5,99,0,0,410,58,1,0,0, - 0,411,412,5,100,0,0,412,413,5,101,0,0,413,414,5,112,0,0,414,415,5,116, - 0,0,415,416,5,104,0,0,416,417,5,95,0,0,417,418,5,119,0,0,418,419,5,114, - 0,0,419,420,5,105,0,0,420,421,5,116,0,0,421,422,5,101,0,0,422,60,1,0, - 0,0,423,424,5,99,0,0,424,425,5,111,0,0,425,426,5,110,0,0,426,427,5,115, - 0,0,427,428,5,101,0,0,428,429,5,114,0,0,429,430,5,118,0,0,430,431,5,97, - 0,0,431,432,5,116,0,0,432,433,5,105,0,0,433,434,5,118,0,0,434,435,5,101, - 0,0,435,62,1,0,0,0,436,437,5,100,0,0,437,438,5,101,0,0,438,439,5,112, - 0,0,439,440,5,116,0,0,440,441,5,104,0,0,441,442,5,95,0,0,442,443,5,98, - 0,0,443,444,5,105,0,0,444,445,5,97,0,0,445,446,5,115,0,0,446,64,1,0,0, - 0,447,448,5,100,0,0,448,449,5,101,0,0,449,450,5,112,0,0,450,451,5,116, - 0,0,451,452,5,104,0,0,452,453,5,95,0,0,453,454,5,98,0,0,454,455,5,105, - 0,0,455,456,5,97,0,0,456,457,5,115,0,0,457,458,5,95,0,0,458,459,5,99, - 0,0,459,460,5,108,0,0,460,461,5,97,0,0,461,462,5,109,0,0,462,463,5,112, - 0,0,463,66,1,0,0,0,464,465,5,115,0,0,465,466,5,108,0,0,466,467,5,111, - 0,0,467,468,5,112,0,0,468,469,5,101,0,0,469,470,5,95,0,0,470,471,5,115, - 0,0,471,472,5,99,0,0,472,473,5,97,0,0,473,474,5,108,0,0,474,475,5,101, - 0,0,475,476,5,100,0,0,476,477,5,95,0,0,477,478,5,100,0,0,478,479,5,101, - 0,0,479,480,5,112,0,0,480,481,5,116,0,0,481,482,5,104,0,0,482,483,5,95, - 0,0,483,484,5,98,0,0,484,485,5,105,0,0,485,486,5,97,0,0,486,487,5,115, - 0,0,487,68,1,0,0,0,488,489,5,101,0,0,489,490,5,110,0,0,490,491,5,97,0, - 0,491,492,5,98,0,0,492,493,5,108,0,0,493,494,5,101,0,0,494,495,5,95,0, - 0,495,496,5,100,0,0,496,497,5,101,0,0,497,498,5,112,0,0,498,499,5,116, - 0,0,499,500,5,104,0,0,500,70,1,0,0,0,501,502,5,116,0,0,502,503,5,111, - 0,0,503,504,5,112,0,0,504,505,5,111,0,0,505,506,5,108,0,0,506,507,5,111, - 0,0,507,508,5,103,0,0,508,509,5,121,0,0,509,72,1,0,0,0,510,511,5,101, - 0,0,511,512,5,110,0,0,512,513,5,97,0,0,513,514,5,98,0,0,514,515,5,108, - 0,0,515,516,5,101,0,0,516,517,5,95,0,0,517,518,5,115,0,0,518,519,5,116, - 0,0,519,520,5,101,0,0,520,521,5,110,0,0,521,522,5,99,0,0,522,523,5,105, - 0,0,523,524,5,108,0,0,524,74,1,0,0,0,525,526,5,115,0,0,526,527,5,116, - 0,0,527,528,5,101,0,0,528,529,5,110,0,0,529,530,5,99,0,0,530,531,5,105, - 0,0,531,532,5,108,0,0,532,533,5,95,0,0,533,534,5,102,0,0,534,535,5,117, - 0,0,535,536,5,110,0,0,536,537,5,99,0,0,537,76,1,0,0,0,538,539,5,115,0, - 0,539,540,5,116,0,0,540,541,5,101,0,0,541,542,5,110,0,0,542,543,5,99, - 0,0,543,544,5,105,0,0,544,545,5,108,0,0,545,546,5,95,0,0,546,547,5,112, - 0,0,547,548,5,97,0,0,548,549,5,115,0,0,549,550,5,115,0,0,550,551,5,95, - 0,0,551,552,5,111,0,0,552,553,5,112,0,0,553,78,1,0,0,0,554,555,5,115, - 0,0,555,556,5,116,0,0,556,557,5,101,0,0,557,558,5,110,0,0,558,559,5,99, - 0,0,559,560,5,105,0,0,560,561,5,108,0,0,561,562,5,95,0,0,562,563,5,114, - 0,0,563,564,5,101,0,0,564,565,5,97,0,0,565,566,5,100,0,0,566,567,5,95, - 0,0,567,568,5,109,0,0,568,569,5,97,0,0,569,570,5,115,0,0,570,571,5,107, - 0,0,571,80,1,0,0,0,572,573,5,115,0,0,573,574,5,116,0,0,574,575,5,101, - 0,0,575,576,5,110,0,0,576,577,5,99,0,0,577,578,5,105,0,0,578,579,5,108, - 0,0,579,580,5,95,0,0,580,581,5,119,0,0,581,582,5,114,0,0,582,583,5,105, - 0,0,583,584,5,116,0,0,584,585,5,101,0,0,585,586,5,95,0,0,586,587,5,109, - 0,0,587,588,5,97,0,0,588,589,5,115,0,0,589,590,5,107,0,0,590,82,1,0,0, - 0,591,592,5,114,0,0,592,593,5,101,0,0,593,594,5,99,0,0,594,595,5,117, - 0,0,595,596,5,114,0,0,596,597,5,115,0,0,597,598,5,105,0,0,598,599,5,111, - 0,0,599,600,5,110,0,0,600,601,5,95,0,0,601,602,5,100,0,0,602,603,5,101, - 0,0,603,604,5,112,0,0,604,605,5,116,0,0,605,606,5,104,0,0,606,84,1,0, - 0,0,607,608,5,112,0,0,608,609,5,97,0,0,609,610,5,121,0,0,610,611,5,108, - 0,0,611,612,5,111,0,0,612,613,5,97,0,0,613,614,5,100,0,0,614,86,1,0,0, - 0,615,616,5,112,0,0,616,617,5,101,0,0,617,618,5,114,0,0,618,619,5,95, - 0,0,619,620,5,109,0,0,620,621,5,97,0,0,621,622,5,116,0,0,622,623,5,101, - 0,0,623,624,5,114,0,0,624,625,5,105,0,0,625,626,5,97,0,0,626,627,5,108, - 0,0,627,88,1,0,0,0,628,629,5,108,0,0,629,630,5,111,0,0,630,631,5,99,0, - 0,631,632,5,97,0,0,632,633,5,108,0,0,633,90,1,0,0,0,634,635,5,124,0,0, - 635,636,5,124,0,0,636,92,1,0,0,0,637,638,5,38,0,0,638,639,5,38,0,0,639, - 94,1,0,0,0,640,641,5,124,0,0,641,96,1,0,0,0,642,643,5,61,0,0,643,644, - 5,61,0,0,644,98,1,0,0,0,645,646,5,33,0,0,646,647,5,61,0,0,647,100,1,0, - 0,0,648,649,5,62,0,0,649,102,1,0,0,0,650,651,5,60,0,0,651,104,1,0,0,0, - 652,653,5,62,0,0,653,654,5,61,0,0,654,106,1,0,0,0,655,656,5,60,0,0,656, - 657,5,61,0,0,657,108,1,0,0,0,658,659,5,43,0,0,659,110,1,0,0,0,660,661, - 5,45,0,0,661,112,1,0,0,0,662,663,5,47,0,0,663,114,1,0,0,0,664,665,5,37, - 0,0,665,116,1,0,0,0,666,667,5,94,0,0,667,118,1,0,0,0,668,669,5,33,0,0, - 669,120,1,0,0,0,670,671,5,59,0,0,671,122,1,0,0,0,672,673,5,46,0,0,673, - 124,1,0,0,0,674,675,5,61,0,0,675,126,1,0,0,0,676,677,5,40,0,0,677,128, - 1,0,0,0,678,679,5,41,0,0,679,130,1,0,0,0,680,681,5,123,0,0,681,132,1, - 0,0,0,682,683,5,125,0,0,683,134,1,0,0,0,684,685,5,91,0,0,685,136,1,0, - 0,0,686,687,5,93,0,0,687,138,1,0,0,0,688,689,5,116,0,0,689,690,5,114, - 0,0,690,691,5,117,0,0,691,692,5,101,0,0,692,140,1,0,0,0,693,694,5,102, - 0,0,694,695,5,97,0,0,695,696,5,108,0,0,696,697,5,115,0,0,697,698,5,101, - 0,0,698,142,1,0,0,0,699,700,5,108,0,0,700,701,5,111,0,0,701,702,5,103, - 0,0,702,144,1,0,0,0,703,704,5,108,0,0,704,705,5,97,0,0,705,706,5,121, - 0,0,706,707,5,111,0,0,707,708,5,117,0,0,708,709,5,116,0,0,709,146,1,0, - 0,0,710,711,5,115,0,0,711,712,5,116,0,0,712,713,5,114,0,0,713,714,5,117, - 0,0,714,715,5,99,0,0,715,716,5,116,0,0,716,148,1,0,0,0,717,718,5,67,0, - 0,718,719,5,111,0,0,719,720,5,109,0,0,720,721,5,112,0,0,721,722,5,117, - 0,0,722,723,5,116,0,0,723,724,5,101,0,0,724,725,5,80,0,0,725,726,5,83, - 0,0,726,727,5,79,0,0,727,150,1,0,0,0,728,729,5,71,0,0,729,730,5,114,0, - 0,730,731,5,97,0,0,731,732,5,112,0,0,732,733,5,104,0,0,733,734,5,105, - 0,0,734,735,5,99,0,0,735,736,5,115,0,0,736,737,5,80,0,0,737,738,5,83, - 0,0,738,739,5,79,0,0,739,152,1,0,0,0,740,741,5,82,0,0,741,742,5,97,0, - 0,742,743,5,121,0,0,743,744,5,116,0,0,744,745,5,114,0,0,745,746,5,97, - 0,0,746,747,5,99,0,0,747,748,5,101,0,0,748,749,5,80,0,0,749,750,5,83, - 0,0,750,751,5,79,0,0,751,154,1,0,0,0,752,753,5,87,0,0,753,754,5,111,0, - 0,754,755,5,114,0,0,755,756,5,107,0,0,756,757,5,103,0,0,757,758,5,114, - 0,0,758,759,5,97,0,0,759,760,5,112,0,0,760,761,5,104,0,0,761,762,5,80, - 0,0,762,763,5,83,0,0,763,764,5,79,0,0,764,156,1,0,0,0,765,766,5,78,0, - 0,766,767,5,111,0,0,767,768,5,100,0,0,768,769,5,101,0,0,769,158,1,0,0, - 0,770,771,5,78,0,0,771,772,5,111,0,0,772,773,5,100,0,0,773,774,5,101, - 0,0,774,775,5,79,0,0,775,776,5,117,0,0,776,777,5,116,0,0,777,778,5,112, - 0,0,778,779,5,117,0,0,779,780,5,116,0,0,780,160,1,0,0,0,781,782,5,82, - 0,0,782,783,5,97,0,0,783,784,5,121,0,0,784,785,5,116,0,0,785,786,5,114, - 0,0,786,787,5,97,0,0,787,788,5,99,0,0,788,789,5,101,0,0,789,790,5,82, - 0,0,790,791,5,97,0,0,791,792,5,121,0,0,792,793,5,103,0,0,793,794,5,101, - 0,0,794,795,5,110,0,0,795,162,1,0,0,0,796,797,5,82,0,0,797,798,5,97,0, - 0,798,799,5,121,0,0,799,800,5,116,0,0,800,801,5,114,0,0,801,802,5,97, - 0,0,802,803,5,99,0,0,803,804,5,101,0,0,804,805,5,80,0,0,805,806,5,97, - 0,0,806,807,5,115,0,0,807,808,5,115,0,0,808,164,1,0,0,0,809,810,5,80, - 0,0,810,811,5,97,0,0,811,812,5,115,0,0,812,813,5,115,0,0,813,814,5,78, - 0,0,814,815,5,111,0,0,815,816,5,100,0,0,816,817,5,101,0,0,817,166,1,0, - 0,0,818,819,5,80,0,0,819,820,5,97,0,0,820,821,5,115,0,0,821,822,5,115, - 0,0,822,823,5,86,0,0,823,824,5,105,0,0,824,825,5,101,0,0,825,826,5,119, - 0,0,826,168,1,0,0,0,827,828,5,80,0,0,828,829,5,105,0,0,829,830,5,112, - 0,0,830,831,5,101,0,0,831,832,5,108,0,0,832,833,5,105,0,0,833,834,5,110, - 0,0,834,835,5,101,0,0,835,170,1,0,0,0,836,837,5,115,0,0,837,838,5,108, - 0,0,838,839,5,111,0,0,839,840,5,116,0,0,840,172,1,0,0,0,841,842,5,114, - 0,0,842,843,5,116,0,0,843,174,1,0,0,0,844,845,5,82,0,0,845,846,5,84,0, - 0,846,847,5,86,0,0,847,176,1,0,0,0,848,849,5,68,0,0,849,850,5,83,0,0, - 850,851,5,86,0,0,851,178,1,0,0,0,852,853,5,114,0,0,853,854,5,111,0,0, - 854,855,5,111,0,0,855,856,5,116,0,0,856,180,1,0,0,0,857,858,5,101,0,0, - 858,859,5,110,0,0,859,860,5,117,0,0,860,861,5,109,0,0,861,182,1,0,0,0, - 862,866,7,0,0,0,863,865,7,1,0,0,864,863,1,0,0,0,865,868,1,0,0,0,866,864, - 1,0,0,0,866,867,1,0,0,0,867,184,1,0,0,0,868,866,1,0,0,0,869,871,7,2,0, - 0,870,869,1,0,0,0,871,872,1,0,0,0,872,870,1,0,0,0,872,873,1,0,0,0,873, - 186,1,0,0,0,874,876,7,2,0,0,875,874,1,0,0,0,876,877,1,0,0,0,877,875,1, - 0,0,0,877,878,1,0,0,0,878,879,1,0,0,0,879,883,5,46,0,0,880,882,7,2,0, - 0,881,880,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884,1,0,0,0,884, - 893,1,0,0,0,885,883,1,0,0,0,886,888,5,46,0,0,887,889,7,2,0,0,888,887, - 1,0,0,0,889,890,1,0,0,0,890,888,1,0,0,0,890,891,1,0,0,0,891,893,1,0,0, - 0,892,875,1,0,0,0,892,886,1,0,0,0,893,188,1,0,0,0,894,900,5,34,0,0,895, - 899,8,3,0,0,896,897,5,34,0,0,897,899,5,34,0,0,898,895,1,0,0,0,898,896, - 1,0,0,0,899,902,1,0,0,0,900,898,1,0,0,0,900,901,1,0,0,0,901,903,1,0,0, - 0,902,900,1,0,0,0,903,904,5,34,0,0,904,190,1,0,0,0,905,909,5,96,0,0,906, - 908,8,4,0,0,907,906,1,0,0,0,908,911,1,0,0,0,909,907,1,0,0,0,909,910,1, - 0,0,0,910,912,1,0,0,0,911,909,1,0,0,0,912,913,5,96,0,0,913,192,1,0,0, - 0,914,918,5,35,0,0,915,917,8,5,0,0,916,915,1,0,0,0,917,920,1,0,0,0,918, - 916,1,0,0,0,918,919,1,0,0,0,919,921,1,0,0,0,920,918,1,0,0,0,921,922,6, - 96,0,0,922,194,1,0,0,0,923,924,7,6,0,0,924,925,1,0,0,0,925,926,6,97,0, - 0,926,196,1,0,0,0,927,928,5,42,0,0,928,198,1,0,0,0,929,930,5,37,0,0,930, - 931,5,123,0,0,931,200,1,0,0,0,932,933,5,125,0,0,933,934,5,37,0,0,934, - 202,1,0,0,0,935,939,3,199,99,0,936,938,9,0,0,0,937,936,1,0,0,0,938,941, - 1,0,0,0,939,940,1,0,0,0,939,937,1,0,0,0,940,942,1,0,0,0,941,939,1,0,0, - 0,942,943,3,201,100,0,943,204,1,0,0,0,12,0,866,872,877,883,890,892,898, - 900,909,918,939,1,6,0,0 + 96,193,97,195,98,197,99,199,100,201,0,203,0,205,101,207,102,209,103,1, + 0,9,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,1,0,48,57,3,0, + 10,10,13,13,34,34,1,0,96,96,2,0,10,10,13,13,3,0,9,10,13,13,32,32,4,0, + 10,10,13,13,34,34,92,92,4,0,34,34,47,47,123,123,125,125,1015,0,1,1,0, + 0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13, + 1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0, + 0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0, + 0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45, + 1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0, + 0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0, + 0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77, + 1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0, + 0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0, + 0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0, + 0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0, + 0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0, + 0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0, + 0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0, + 0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0, + 0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0, + 0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0, + 0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0, + 0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0, + 0,199,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,1,211,1,0,0,0, + 3,217,1,0,0,0,5,220,1,0,0,0,7,222,1,0,0,0,9,230,1,0,0,0,11,237,1,0,0, + 0,13,241,1,0,0,0,15,247,1,0,0,0,17,254,1,0,0,0,19,260,1,0,0,0,21,272, + 1,0,0,0,23,290,1,0,0,0,25,296,1,0,0,0,27,304,1,0,0,0,29,311,1,0,0,0,31, + 317,1,0,0,0,33,324,1,0,0,0,35,329,1,0,0,0,37,338,1,0,0,0,39,343,1,0,0, + 0,41,355,1,0,0,0,43,363,1,0,0,0,45,370,1,0,0,0,47,384,1,0,0,0,49,389, + 1,0,0,0,51,396,1,0,0,0,53,399,1,0,0,0,55,404,1,0,0,0,57,415,1,0,0,0,59, + 427,1,0,0,0,61,440,1,0,0,0,63,451,1,0,0,0,65,468,1,0,0,0,67,492,1,0,0, + 0,69,505,1,0,0,0,71,514,1,0,0,0,73,529,1,0,0,0,75,542,1,0,0,0,77,558, + 1,0,0,0,79,576,1,0,0,0,81,595,1,0,0,0,83,611,1,0,0,0,85,619,1,0,0,0,87, + 632,1,0,0,0,89,638,1,0,0,0,91,641,1,0,0,0,93,644,1,0,0,0,95,646,1,0,0, + 0,97,649,1,0,0,0,99,652,1,0,0,0,101,654,1,0,0,0,103,656,1,0,0,0,105,659, + 1,0,0,0,107,662,1,0,0,0,109,664,1,0,0,0,111,666,1,0,0,0,113,668,1,0,0, + 0,115,670,1,0,0,0,117,672,1,0,0,0,119,674,1,0,0,0,121,676,1,0,0,0,123, + 678,1,0,0,0,125,680,1,0,0,0,127,682,1,0,0,0,129,684,1,0,0,0,131,686,1, + 0,0,0,133,688,1,0,0,0,135,690,1,0,0,0,137,692,1,0,0,0,139,694,1,0,0,0, + 141,699,1,0,0,0,143,705,1,0,0,0,145,709,1,0,0,0,147,716,1,0,0,0,149,723, + 1,0,0,0,151,734,1,0,0,0,153,746,1,0,0,0,155,758,1,0,0,0,157,771,1,0,0, + 0,159,776,1,0,0,0,161,787,1,0,0,0,163,802,1,0,0,0,165,815,1,0,0,0,167, + 824,1,0,0,0,169,833,1,0,0,0,171,842,1,0,0,0,173,847,1,0,0,0,175,850,1, + 0,0,0,177,854,1,0,0,0,179,858,1,0,0,0,181,863,1,0,0,0,183,868,1,0,0,0, + 185,876,1,0,0,0,187,898,1,0,0,0,189,900,1,0,0,0,191,911,1,0,0,0,193,920, + 1,0,0,0,195,929,1,0,0,0,197,933,1,0,0,0,199,935,1,0,0,0,201,939,1,0,0, + 0,203,977,1,0,0,0,205,982,1,0,0,0,207,985,1,0,0,0,209,988,1,0,0,0,211, + 212,5,99,0,0,212,213,5,111,0,0,213,214,5,110,0,0,214,215,5,115,0,0,215, + 216,5,116,0,0,216,2,1,0,0,0,217,218,5,58,0,0,218,219,5,58,0,0,219,4,1, + 0,0,0,220,221,5,44,0,0,221,6,1,0,0,0,222,223,5,83,0,0,223,224,5,97,0, + 0,224,225,5,109,0,0,225,226,5,112,0,0,226,227,5,108,0,0,227,228,5,101, + 0,0,228,229,5,114,0,0,229,8,1,0,0,0,230,231,5,100,0,0,231,232,5,101,0, + 0,232,233,5,102,0,0,233,234,5,105,0,0,234,235,5,110,0,0,235,236,5,101, + 0,0,236,10,1,0,0,0,237,238,5,114,0,0,238,239,5,116,0,0,239,240,5,118, + 0,0,240,12,1,0,0,0,241,242,5,98,0,0,242,243,5,108,0,0,243,244,5,101,0, + 0,244,245,5,110,0,0,245,246,5,100,0,0,246,14,1,0,0,0,247,248,5,108,0, + 0,248,249,5,97,0,0,249,250,5,117,0,0,250,251,5,110,0,0,251,252,5,99,0, + 0,252,253,5,104,0,0,253,16,1,0,0,0,254,255,5,101,0,0,255,256,5,110,0, + 0,256,257,5,116,0,0,257,258,5,114,0,0,258,259,5,121,0,0,259,18,1,0,0, + 0,260,261,5,110,0,0,261,262,5,117,0,0,262,263,5,109,0,0,263,264,5,95, + 0,0,264,265,5,116,0,0,265,266,5,104,0,0,266,267,5,114,0,0,267,268,5,101, + 0,0,268,269,5,97,0,0,269,270,5,100,0,0,270,271,5,115,0,0,271,20,1,0,0, + 0,272,273,5,109,0,0,273,274,5,97,0,0,274,275,5,120,0,0,275,276,5,95,0, + 0,276,277,5,100,0,0,277,278,5,105,0,0,278,279,5,115,0,0,279,280,5,112, + 0,0,280,281,5,97,0,0,281,282,5,116,0,0,282,283,5,99,0,0,283,284,5,104, + 0,0,284,285,5,95,0,0,285,286,5,103,0,0,286,287,5,114,0,0,287,288,5,105, + 0,0,288,289,5,100,0,0,289,22,1,0,0,0,290,291,5,105,0,0,291,292,5,110, + 0,0,292,293,5,112,0,0,293,294,5,117,0,0,294,295,5,116,0,0,295,24,1,0, + 0,0,296,297,5,99,0,0,297,298,5,111,0,0,298,299,5,109,0,0,299,300,5,112, + 0,0,300,301,5,117,0,0,301,302,5,116,0,0,302,303,5,101,0,0,303,26,1,0, + 0,0,304,305,5,118,0,0,305,306,5,101,0,0,306,307,5,114,0,0,307,308,5,116, + 0,0,308,309,5,101,0,0,309,310,5,120,0,0,310,28,1,0,0,0,311,312,5,112, + 0,0,312,313,5,105,0,0,313,314,5,120,0,0,314,315,5,101,0,0,315,316,5,108, + 0,0,316,30,1,0,0,0,317,318,5,100,0,0,318,319,5,111,0,0,319,320,5,109, + 0,0,320,321,5,97,0,0,321,322,5,105,0,0,322,323,5,110,0,0,323,32,1,0,0, + 0,324,325,5,104,0,0,325,326,5,117,0,0,326,327,5,108,0,0,327,328,5,108, + 0,0,328,34,1,0,0,0,329,330,5,103,0,0,330,331,5,101,0,0,331,332,5,111, + 0,0,332,333,5,109,0,0,333,334,5,101,0,0,334,335,5,116,0,0,335,336,5,114, + 0,0,336,337,5,121,0,0,337,36,1,0,0,0,338,339,5,109,0,0,339,340,5,105, + 0,0,340,341,5,115,0,0,341,342,5,115,0,0,342,38,1,0,0,0,343,344,5,99,0, + 0,344,345,5,108,0,0,345,346,5,111,0,0,346,347,5,115,0,0,347,348,5,101, + 0,0,348,349,5,115,0,0,349,350,5,116,0,0,350,351,5,95,0,0,351,352,5,104, + 0,0,352,353,5,105,0,0,353,354,5,116,0,0,354,40,1,0,0,0,355,356,5,97,0, + 0,356,357,5,110,0,0,357,358,5,121,0,0,358,359,5,95,0,0,359,360,5,104, + 0,0,360,361,5,105,0,0,361,362,5,116,0,0,362,42,1,0,0,0,363,364,5,114, + 0,0,364,365,5,97,0,0,365,366,5,121,0,0,366,367,5,103,0,0,367,368,5,101, + 0,0,368,369,5,110,0,0,369,44,1,0,0,0,370,371,5,97,0,0,371,372,5,109,0, + 0,372,373,5,112,0,0,373,374,5,108,0,0,374,375,5,105,0,0,375,376,5,102, + 0,0,376,377,5,105,0,0,377,378,5,99,0,0,378,379,5,97,0,0,379,380,5,116, + 0,0,380,381,5,105,0,0,381,382,5,111,0,0,382,383,5,110,0,0,383,46,1,0, + 0,0,384,385,5,109,0,0,385,386,5,101,0,0,386,387,5,115,0,0,387,388,5,104, + 0,0,388,48,1,0,0,0,389,390,5,115,0,0,390,391,5,104,0,0,391,392,5,97,0, + 0,392,393,5,100,0,0,393,394,5,101,0,0,394,395,5,114,0,0,395,50,1,0,0, + 0,396,397,5,100,0,0,397,398,5,115,0,0,398,52,1,0,0,0,399,400,5,99,0,0, + 400,401,5,117,0,0,401,402,5,108,0,0,402,403,5,108,0,0,403,54,1,0,0,0, + 404,405,5,100,0,0,405,406,5,101,0,0,406,407,5,112,0,0,407,408,5,116,0, + 0,408,409,5,104,0,0,409,410,5,95,0,0,410,411,5,102,0,0,411,412,5,117, + 0,0,412,413,5,110,0,0,413,414,5,99,0,0,414,56,1,0,0,0,415,416,5,100,0, + 0,416,417,5,101,0,0,417,418,5,112,0,0,418,419,5,116,0,0,419,420,5,104, + 0,0,420,421,5,95,0,0,421,422,5,119,0,0,422,423,5,114,0,0,423,424,5,105, + 0,0,424,425,5,116,0,0,425,426,5,101,0,0,426,58,1,0,0,0,427,428,5,99,0, + 0,428,429,5,111,0,0,429,430,5,110,0,0,430,431,5,115,0,0,431,432,5,101, + 0,0,432,433,5,114,0,0,433,434,5,118,0,0,434,435,5,97,0,0,435,436,5,116, + 0,0,436,437,5,105,0,0,437,438,5,118,0,0,438,439,5,101,0,0,439,60,1,0, + 0,0,440,441,5,100,0,0,441,442,5,101,0,0,442,443,5,112,0,0,443,444,5,116, + 0,0,444,445,5,104,0,0,445,446,5,95,0,0,446,447,5,98,0,0,447,448,5,105, + 0,0,448,449,5,97,0,0,449,450,5,115,0,0,450,62,1,0,0,0,451,452,5,100,0, + 0,452,453,5,101,0,0,453,454,5,112,0,0,454,455,5,116,0,0,455,456,5,104, + 0,0,456,457,5,95,0,0,457,458,5,98,0,0,458,459,5,105,0,0,459,460,5,97, + 0,0,460,461,5,115,0,0,461,462,5,95,0,0,462,463,5,99,0,0,463,464,5,108, + 0,0,464,465,5,97,0,0,465,466,5,109,0,0,466,467,5,112,0,0,467,64,1,0,0, + 0,468,469,5,115,0,0,469,470,5,108,0,0,470,471,5,111,0,0,471,472,5,112, + 0,0,472,473,5,101,0,0,473,474,5,95,0,0,474,475,5,115,0,0,475,476,5,99, + 0,0,476,477,5,97,0,0,477,478,5,108,0,0,478,479,5,101,0,0,479,480,5,100, + 0,0,480,481,5,95,0,0,481,482,5,100,0,0,482,483,5,101,0,0,483,484,5,112, + 0,0,484,485,5,116,0,0,485,486,5,104,0,0,486,487,5,95,0,0,487,488,5,98, + 0,0,488,489,5,105,0,0,489,490,5,97,0,0,490,491,5,115,0,0,491,66,1,0,0, + 0,492,493,5,101,0,0,493,494,5,110,0,0,494,495,5,97,0,0,495,496,5,98,0, + 0,496,497,5,108,0,0,497,498,5,101,0,0,498,499,5,95,0,0,499,500,5,100, + 0,0,500,501,5,101,0,0,501,502,5,112,0,0,502,503,5,116,0,0,503,504,5,104, + 0,0,504,68,1,0,0,0,505,506,5,116,0,0,506,507,5,111,0,0,507,508,5,112, + 0,0,508,509,5,111,0,0,509,510,5,108,0,0,510,511,5,111,0,0,511,512,5,103, + 0,0,512,513,5,121,0,0,513,70,1,0,0,0,514,515,5,101,0,0,515,516,5,110, + 0,0,516,517,5,97,0,0,517,518,5,98,0,0,518,519,5,108,0,0,519,520,5,101, + 0,0,520,521,5,95,0,0,521,522,5,115,0,0,522,523,5,116,0,0,523,524,5,101, + 0,0,524,525,5,110,0,0,525,526,5,99,0,0,526,527,5,105,0,0,527,528,5,108, + 0,0,528,72,1,0,0,0,529,530,5,115,0,0,530,531,5,116,0,0,531,532,5,101, + 0,0,532,533,5,110,0,0,533,534,5,99,0,0,534,535,5,105,0,0,535,536,5,108, + 0,0,536,537,5,95,0,0,537,538,5,102,0,0,538,539,5,117,0,0,539,540,5,110, + 0,0,540,541,5,99,0,0,541,74,1,0,0,0,542,543,5,115,0,0,543,544,5,116,0, + 0,544,545,5,101,0,0,545,546,5,110,0,0,546,547,5,99,0,0,547,548,5,105, + 0,0,548,549,5,108,0,0,549,550,5,95,0,0,550,551,5,112,0,0,551,552,5,97, + 0,0,552,553,5,115,0,0,553,554,5,115,0,0,554,555,5,95,0,0,555,556,5,111, + 0,0,556,557,5,112,0,0,557,76,1,0,0,0,558,559,5,115,0,0,559,560,5,116, + 0,0,560,561,5,101,0,0,561,562,5,110,0,0,562,563,5,99,0,0,563,564,5,105, + 0,0,564,565,5,108,0,0,565,566,5,95,0,0,566,567,5,114,0,0,567,568,5,101, + 0,0,568,569,5,97,0,0,569,570,5,100,0,0,570,571,5,95,0,0,571,572,5,109, + 0,0,572,573,5,97,0,0,573,574,5,115,0,0,574,575,5,107,0,0,575,78,1,0,0, + 0,576,577,5,115,0,0,577,578,5,116,0,0,578,579,5,101,0,0,579,580,5,110, + 0,0,580,581,5,99,0,0,581,582,5,105,0,0,582,583,5,108,0,0,583,584,5,95, + 0,0,584,585,5,119,0,0,585,586,5,114,0,0,586,587,5,105,0,0,587,588,5,116, + 0,0,588,589,5,101,0,0,589,590,5,95,0,0,590,591,5,109,0,0,591,592,5,97, + 0,0,592,593,5,115,0,0,593,594,5,107,0,0,594,80,1,0,0,0,595,596,5,114, + 0,0,596,597,5,101,0,0,597,598,5,99,0,0,598,599,5,117,0,0,599,600,5,114, + 0,0,600,601,5,115,0,0,601,602,5,105,0,0,602,603,5,111,0,0,603,604,5,110, + 0,0,604,605,5,95,0,0,605,606,5,100,0,0,606,607,5,101,0,0,607,608,5,112, + 0,0,608,609,5,116,0,0,609,610,5,104,0,0,610,82,1,0,0,0,611,612,5,112, + 0,0,612,613,5,97,0,0,613,614,5,121,0,0,614,615,5,108,0,0,615,616,5,111, + 0,0,616,617,5,97,0,0,617,618,5,100,0,0,618,84,1,0,0,0,619,620,5,112,0, + 0,620,621,5,101,0,0,621,622,5,114,0,0,622,623,5,95,0,0,623,624,5,109, + 0,0,624,625,5,97,0,0,625,626,5,116,0,0,626,627,5,101,0,0,627,628,5,114, + 0,0,628,629,5,105,0,0,629,630,5,97,0,0,630,631,5,108,0,0,631,86,1,0,0, + 0,632,633,5,108,0,0,633,634,5,111,0,0,634,635,5,99,0,0,635,636,5,97,0, + 0,636,637,5,108,0,0,637,88,1,0,0,0,638,639,5,124,0,0,639,640,5,124,0, + 0,640,90,1,0,0,0,641,642,5,38,0,0,642,643,5,38,0,0,643,92,1,0,0,0,644, + 645,5,124,0,0,645,94,1,0,0,0,646,647,5,61,0,0,647,648,5,61,0,0,648,96, + 1,0,0,0,649,650,5,33,0,0,650,651,5,61,0,0,651,98,1,0,0,0,652,653,5,62, + 0,0,653,100,1,0,0,0,654,655,5,60,0,0,655,102,1,0,0,0,656,657,5,62,0,0, + 657,658,5,61,0,0,658,104,1,0,0,0,659,660,5,60,0,0,660,661,5,61,0,0,661, + 106,1,0,0,0,662,663,5,43,0,0,663,108,1,0,0,0,664,665,5,45,0,0,665,110, + 1,0,0,0,666,667,5,47,0,0,667,112,1,0,0,0,668,669,5,37,0,0,669,114,1,0, + 0,0,670,671,5,94,0,0,671,116,1,0,0,0,672,673,5,33,0,0,673,118,1,0,0,0, + 674,675,5,59,0,0,675,120,1,0,0,0,676,677,5,58,0,0,677,122,1,0,0,0,678, + 679,5,46,0,0,679,124,1,0,0,0,680,681,5,61,0,0,681,126,1,0,0,0,682,683, + 5,40,0,0,683,128,1,0,0,0,684,685,5,41,0,0,685,130,1,0,0,0,686,687,5,123, + 0,0,687,132,1,0,0,0,688,689,5,125,0,0,689,134,1,0,0,0,690,691,5,91,0, + 0,691,136,1,0,0,0,692,693,5,93,0,0,693,138,1,0,0,0,694,695,5,116,0,0, + 695,696,5,114,0,0,696,697,5,117,0,0,697,698,5,101,0,0,698,140,1,0,0,0, + 699,700,5,102,0,0,700,701,5,97,0,0,701,702,5,108,0,0,702,703,5,115,0, + 0,703,704,5,101,0,0,704,142,1,0,0,0,705,706,5,108,0,0,706,707,5,111,0, + 0,707,708,5,103,0,0,708,144,1,0,0,0,709,710,5,108,0,0,710,711,5,97,0, + 0,711,712,5,121,0,0,712,713,5,111,0,0,713,714,5,117,0,0,714,715,5,116, + 0,0,715,146,1,0,0,0,716,717,5,115,0,0,717,718,5,116,0,0,718,719,5,114, + 0,0,719,720,5,117,0,0,720,721,5,99,0,0,721,722,5,116,0,0,722,148,1,0, + 0,0,723,724,5,67,0,0,724,725,5,111,0,0,725,726,5,109,0,0,726,727,5,112, + 0,0,727,728,5,117,0,0,728,729,5,116,0,0,729,730,5,101,0,0,730,731,5,80, + 0,0,731,732,5,83,0,0,732,733,5,79,0,0,733,150,1,0,0,0,734,735,5,71,0, + 0,735,736,5,114,0,0,736,737,5,97,0,0,737,738,5,112,0,0,738,739,5,104, + 0,0,739,740,5,105,0,0,740,741,5,99,0,0,741,742,5,115,0,0,742,743,5,80, + 0,0,743,744,5,83,0,0,744,745,5,79,0,0,745,152,1,0,0,0,746,747,5,82,0, + 0,747,748,5,97,0,0,748,749,5,121,0,0,749,750,5,116,0,0,750,751,5,114, + 0,0,751,752,5,97,0,0,752,753,5,99,0,0,753,754,5,101,0,0,754,755,5,80, + 0,0,755,756,5,83,0,0,756,757,5,79,0,0,757,154,1,0,0,0,758,759,5,87,0, + 0,759,760,5,111,0,0,760,761,5,114,0,0,761,762,5,107,0,0,762,763,5,103, + 0,0,763,764,5,114,0,0,764,765,5,97,0,0,765,766,5,112,0,0,766,767,5,104, + 0,0,767,768,5,80,0,0,768,769,5,83,0,0,769,770,5,79,0,0,770,156,1,0,0, + 0,771,772,5,78,0,0,772,773,5,111,0,0,773,774,5,100,0,0,774,775,5,101, + 0,0,775,158,1,0,0,0,776,777,5,78,0,0,777,778,5,111,0,0,778,779,5,100, + 0,0,779,780,5,101,0,0,780,781,5,79,0,0,781,782,5,117,0,0,782,783,5,116, + 0,0,783,784,5,112,0,0,784,785,5,117,0,0,785,786,5,116,0,0,786,160,1,0, + 0,0,787,788,5,82,0,0,788,789,5,97,0,0,789,790,5,121,0,0,790,791,5,116, + 0,0,791,792,5,114,0,0,792,793,5,97,0,0,793,794,5,99,0,0,794,795,5,101, + 0,0,795,796,5,82,0,0,796,797,5,97,0,0,797,798,5,121,0,0,798,799,5,103, + 0,0,799,800,5,101,0,0,800,801,5,110,0,0,801,162,1,0,0,0,802,803,5,82, + 0,0,803,804,5,97,0,0,804,805,5,121,0,0,805,806,5,116,0,0,806,807,5,114, + 0,0,807,808,5,97,0,0,808,809,5,99,0,0,809,810,5,101,0,0,810,811,5,80, + 0,0,811,812,5,97,0,0,812,813,5,115,0,0,813,814,5,115,0,0,814,164,1,0, + 0,0,815,816,5,80,0,0,816,817,5,97,0,0,817,818,5,115,0,0,818,819,5,115, + 0,0,819,820,5,78,0,0,820,821,5,111,0,0,821,822,5,100,0,0,822,823,5,101, + 0,0,823,166,1,0,0,0,824,825,5,80,0,0,825,826,5,97,0,0,826,827,5,115,0, + 0,827,828,5,115,0,0,828,829,5,86,0,0,829,830,5,105,0,0,830,831,5,101, + 0,0,831,832,5,119,0,0,832,168,1,0,0,0,833,834,5,80,0,0,834,835,5,105, + 0,0,835,836,5,112,0,0,836,837,5,101,0,0,837,838,5,108,0,0,838,839,5,105, + 0,0,839,840,5,110,0,0,840,841,5,101,0,0,841,170,1,0,0,0,842,843,5,115, + 0,0,843,844,5,108,0,0,844,845,5,111,0,0,845,846,5,116,0,0,846,172,1,0, + 0,0,847,848,5,114,0,0,848,849,5,116,0,0,849,174,1,0,0,0,850,851,5,82, + 0,0,851,852,5,84,0,0,852,853,5,86,0,0,853,176,1,0,0,0,854,855,5,68,0, + 0,855,856,5,83,0,0,856,857,5,86,0,0,857,178,1,0,0,0,858,859,5,114,0,0, + 859,860,5,111,0,0,860,861,5,111,0,0,861,862,5,116,0,0,862,180,1,0,0,0, + 863,864,5,101,0,0,864,865,5,110,0,0,865,866,5,117,0,0,866,867,5,109,0, + 0,867,182,1,0,0,0,868,872,7,0,0,0,869,871,7,1,0,0,870,869,1,0,0,0,871, + 874,1,0,0,0,872,870,1,0,0,0,872,873,1,0,0,0,873,184,1,0,0,0,874,872,1, + 0,0,0,875,877,7,2,0,0,876,875,1,0,0,0,877,878,1,0,0,0,878,876,1,0,0,0, + 878,879,1,0,0,0,879,186,1,0,0,0,880,882,7,2,0,0,881,880,1,0,0,0,882,883, + 1,0,0,0,883,881,1,0,0,0,883,884,1,0,0,0,884,885,1,0,0,0,885,889,5,46, + 0,0,886,888,7,2,0,0,887,886,1,0,0,0,888,891,1,0,0,0,889,887,1,0,0,0,889, + 890,1,0,0,0,890,899,1,0,0,0,891,889,1,0,0,0,892,894,5,46,0,0,893,895, + 7,2,0,0,894,893,1,0,0,0,895,896,1,0,0,0,896,894,1,0,0,0,896,897,1,0,0, + 0,897,899,1,0,0,0,898,881,1,0,0,0,898,892,1,0,0,0,899,188,1,0,0,0,900, + 906,5,34,0,0,901,905,8,3,0,0,902,903,5,34,0,0,903,905,5,34,0,0,904,901, + 1,0,0,0,904,902,1,0,0,0,905,908,1,0,0,0,906,904,1,0,0,0,906,907,1,0,0, + 0,907,909,1,0,0,0,908,906,1,0,0,0,909,910,5,34,0,0,910,190,1,0,0,0,911, + 915,5,96,0,0,912,914,8,4,0,0,913,912,1,0,0,0,914,917,1,0,0,0,915,913, + 1,0,0,0,915,916,1,0,0,0,916,918,1,0,0,0,917,915,1,0,0,0,918,919,5,96, + 0,0,919,192,1,0,0,0,920,924,5,35,0,0,921,923,8,5,0,0,922,921,1,0,0,0, + 923,926,1,0,0,0,924,922,1,0,0,0,924,925,1,0,0,0,925,927,1,0,0,0,926,924, + 1,0,0,0,927,928,6,96,0,0,928,194,1,0,0,0,929,930,7,6,0,0,930,931,1,0, + 0,0,931,932,6,97,0,0,932,196,1,0,0,0,933,934,5,42,0,0,934,198,1,0,0,0, + 935,936,5,123,0,0,936,937,4,99,0,0,937,938,3,203,101,0,938,200,1,0,0, + 0,939,940,5,123,0,0,940,941,3,203,101,0,941,202,1,0,0,0,942,976,3,201, + 100,0,943,944,5,47,0,0,944,945,5,47,0,0,945,949,1,0,0,0,946,948,8,5,0, + 0,947,946,1,0,0,0,948,951,1,0,0,0,949,947,1,0,0,0,949,950,1,0,0,0,950, + 976,1,0,0,0,951,949,1,0,0,0,952,953,5,47,0,0,953,954,5,42,0,0,954,958, + 1,0,0,0,955,957,9,0,0,0,956,955,1,0,0,0,957,960,1,0,0,0,958,959,1,0,0, + 0,958,956,1,0,0,0,959,961,1,0,0,0,960,958,1,0,0,0,961,962,5,42,0,0,962, + 976,5,47,0,0,963,969,5,34,0,0,964,968,8,7,0,0,965,966,5,92,0,0,966,968, + 9,0,0,0,967,964,1,0,0,0,967,965,1,0,0,0,968,971,1,0,0,0,969,967,1,0,0, + 0,969,970,1,0,0,0,970,972,1,0,0,0,971,969,1,0,0,0,972,976,5,34,0,0,973, + 976,8,8,0,0,974,976,5,47,0,0,975,942,1,0,0,0,975,943,1,0,0,0,975,952, + 1,0,0,0,975,963,1,0,0,0,975,973,1,0,0,0,975,974,1,0,0,0,976,979,1,0,0, + 0,977,975,1,0,0,0,977,978,1,0,0,0,978,980,1,0,0,0,979,977,1,0,0,0,980, + 981,5,125,0,0,981,204,1,0,0,0,982,983,5,37,0,0,983,984,5,123,0,0,984, + 206,1,0,0,0,985,986,5,125,0,0,986,987,5,37,0,0,987,208,1,0,0,0,988,992, + 3,205,102,0,989,991,9,0,0,0,990,989,1,0,0,0,991,994,1,0,0,0,992,993,1, + 0,0,0,992,990,1,0,0,0,993,995,1,0,0,0,994,992,1,0,0,0,995,996,3,207,103, + 0,996,210,1,0,0,0,18,0,872,878,883,889,896,898,904,906,915,924,949,958, + 967,969,975,977,992,1,6,0,0 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -464,6 +486,26 @@ const atn::ATN& SIGLexer::getATN() const { } +bool SIGLexer::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { + switch (ruleIndex) { + case 99: return FUNC_BODYSempred(antlrcpp::downCast(context), predicateIndex); + + default: + break; + } + return true; +} + + +bool SIGLexer::FUNC_BODYSempred(antlr4::RuleContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 0: return at_function_body(); + + default: + break; + } + return true; +} void SIGLexer::initialize() { diff --git a/sources/SIGParser/.antlr/SIGLexer.h b/sources/SIGParser/.antlr/SIGLexer.h index 6d7413d7a..9f12ca1fd 100644 --- a/sources/SIGParser/.antlr/SIGLexer.h +++ b/sources/SIGParser/.antlr/SIGLexer.h @@ -19,16 +19,17 @@ class SIGLexer : public antlr4::Lexer { T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, - T__44 = 45, OR = 46, AND = 47, PIPE = 48, EQ = 49, NEQ = 50, GT = 51, - LT = 52, GTEQ = 53, LTEQ = 54, PLUS = 55, MINUS = 56, DIV = 57, MOD = 58, - POW = 59, NOT = 60, SCOL = 61, DOT = 62, ASSIGN = 63, OPAR = 64, CPAR = 65, + OR = 45, AND = 46, PIPE = 47, EQ = 48, NEQ = 49, GT = 50, LT = 51, GTEQ = 52, + LTEQ = 53, PLUS = 54, MINUS = 55, DIV = 56, MOD = 57, POW = 58, NOT = 59, + SCOL = 60, COLON = 61, DOT = 62, ASSIGN = 63, OPAR = 64, CPAR = 65, OBRACE = 66, CBRACE = 67, OSBRACE = 68, CSBRACE = 69, TRUE = 70, FALSE = 71, LOG = 72, LAYOUT = 73, STRUCT = 74, COMPUTE_PSO = 75, GRAPHICS_PSO = 76, RAYTRACE_PSO = 77, WORKGRAPH_PSO = 78, NODE = 79, NODE_OUTPUT = 80, RAYTRACE_RAYGEN = 81, RAYTRACE_PASS = 82, PASS = 83, VIEW = 84, PIPELINE = 85, SLOT = 86, RT = 87, RTV = 88, DSV = 89, ROOTSIG = 90, ENUM = 91, ID = 92, INT_SCALAR = 93, FLOAT_SCALAR = 94, STRING = 95, RAWEXPR = 96, COMMENT = 97, - SPACE = 98, POINTER = 99, INSERT_START = 100, INSERT_END = 101, INSERT_BLOCK = 102 + SPACE = 98, POINTER = 99, FUNC_BODY = 100, INSERT_START = 101, INSERT_END = 102, + INSERT_BLOCK = 103 }; explicit SIGLexer(antlr4::CharStream *input); @@ -36,6 +37,27 @@ class SIGLexer : public antlr4::Lexer { ~SIGLexer() override; + size_t last_types[3] = { 0, 0, 0 }; + + bool at_function_body() const + { + return last_types[0] == CPAR + || (last_types[0] == ID && last_types[1] == COLON && last_types[2] == CPAR); + } + + std::unique_ptr nextToken() override + { + auto token = antlr4::Lexer::nextToken(); + if (token->getChannel() == antlr4::Token::DEFAULT_CHANNEL) + { + last_types[2] = last_types[1]; + last_types[1] = last_types[0]; + last_types[0] = token->getType(); + } + return token; + } + + std::string getGrammarFileName() const override; const std::vector& getRuleNames() const override; @@ -50,6 +72,8 @@ class SIGLexer : public antlr4::Lexer { const antlr4::atn::ATN& getATN() const override; + bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; + // By default the static state used to implement the lexer is lazily initialized during the first // call to the constructor. You can call this function if you wish to initialize the static state // ahead of time. @@ -60,6 +84,7 @@ class SIGLexer : public antlr4::Lexer { // Individual action functions triggered by action() above. // Individual semantic predicate functions triggered by sempred() above. + bool FUNC_BODYSempred(antlr4::RuleContext *_localctx, size_t predicateIndex); }; diff --git a/sources/SIGParser/.antlr/SIGLexer.interp b/sources/SIGParser/.antlr/SIGLexer.interp index da03c749b..74f54a6a4 100644 --- a/sources/SIGParser/.antlr/SIGLexer.interp +++ b/sources/SIGParser/.antlr/SIGLexer.interp @@ -7,7 +7,6 @@ null 'define' 'rtv' 'blend' -':' 'launch' 'entry' 'num_threads' @@ -61,6 +60,7 @@ null '^' '!' ';' +':' '.' '=' '(' @@ -99,6 +99,7 @@ null null null '*' +null '%{' '}%' null @@ -149,7 +150,6 @@ null null null null -null OR AND PIPE @@ -166,6 +166,7 @@ MOD POW NOT SCOL +COLON DOT ASSIGN OPAR @@ -204,6 +205,7 @@ RAWEXPR COMMENT SPACE POINTER +FUNC_BODY INSERT_START INSERT_END INSERT_BLOCK @@ -253,7 +255,6 @@ T__40 T__41 T__42 T__43 -T__44 OR AND PIPE @@ -270,6 +271,7 @@ MOD POW NOT SCOL +COLON DOT ASSIGN OPAR @@ -308,6 +310,9 @@ RAWEXPR COMMENT SPACE POINTER +FUNC_BODY +FUNC_BLOCK +FUNC_BLOCK_TAIL INSERT_START INSERT_END INSERT_BLOCK @@ -320,4 +325,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 102, 944, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 5, 91, 865, 8, 91, 10, 91, 12, 91, 868, 9, 91, 1, 92, 4, 92, 871, 8, 92, 11, 92, 12, 92, 872, 1, 93, 4, 93, 876, 8, 93, 11, 93, 12, 93, 877, 1, 93, 1, 93, 5, 93, 882, 8, 93, 10, 93, 12, 93, 885, 9, 93, 1, 93, 1, 93, 4, 93, 889, 8, 93, 11, 93, 12, 93, 890, 3, 93, 893, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 5, 94, 899, 8, 94, 10, 94, 12, 94, 902, 9, 94, 1, 94, 1, 94, 1, 95, 1, 95, 5, 95, 908, 8, 95, 10, 95, 12, 95, 911, 9, 95, 1, 95, 1, 95, 1, 96, 1, 96, 5, 96, 917, 8, 96, 10, 96, 12, 96, 920, 9, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 5, 101, 938, 8, 101, 10, 101, 12, 101, 941, 9, 101, 1, 101, 1, 101, 1, 939, 0, 102, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 1, 0, 7, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 10, 10, 13, 13, 34, 34, 1, 0, 96, 96, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 954, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 1, 205, 1, 0, 0, 0, 3, 211, 1, 0, 0, 0, 5, 214, 1, 0, 0, 0, 7, 216, 1, 0, 0, 0, 9, 224, 1, 0, 0, 0, 11, 231, 1, 0, 0, 0, 13, 235, 1, 0, 0, 0, 15, 241, 1, 0, 0, 0, 17, 243, 1, 0, 0, 0, 19, 250, 1, 0, 0, 0, 21, 256, 1, 0, 0, 0, 23, 268, 1, 0, 0, 0, 25, 286, 1, 0, 0, 0, 27, 292, 1, 0, 0, 0, 29, 300, 1, 0, 0, 0, 31, 307, 1, 0, 0, 0, 33, 313, 1, 0, 0, 0, 35, 320, 1, 0, 0, 0, 37, 325, 1, 0, 0, 0, 39, 334, 1, 0, 0, 0, 41, 339, 1, 0, 0, 0, 43, 351, 1, 0, 0, 0, 45, 359, 1, 0, 0, 0, 47, 366, 1, 0, 0, 0, 49, 380, 1, 0, 0, 0, 51, 385, 1, 0, 0, 0, 53, 392, 1, 0, 0, 0, 55, 395, 1, 0, 0, 0, 57, 400, 1, 0, 0, 0, 59, 411, 1, 0, 0, 0, 61, 423, 1, 0, 0, 0, 63, 436, 1, 0, 0, 0, 65, 447, 1, 0, 0, 0, 67, 464, 1, 0, 0, 0, 69, 488, 1, 0, 0, 0, 71, 501, 1, 0, 0, 0, 73, 510, 1, 0, 0, 0, 75, 525, 1, 0, 0, 0, 77, 538, 1, 0, 0, 0, 79, 554, 1, 0, 0, 0, 81, 572, 1, 0, 0, 0, 83, 591, 1, 0, 0, 0, 85, 607, 1, 0, 0, 0, 87, 615, 1, 0, 0, 0, 89, 628, 1, 0, 0, 0, 91, 634, 1, 0, 0, 0, 93, 637, 1, 0, 0, 0, 95, 640, 1, 0, 0, 0, 97, 642, 1, 0, 0, 0, 99, 645, 1, 0, 0, 0, 101, 648, 1, 0, 0, 0, 103, 650, 1, 0, 0, 0, 105, 652, 1, 0, 0, 0, 107, 655, 1, 0, 0, 0, 109, 658, 1, 0, 0, 0, 111, 660, 1, 0, 0, 0, 113, 662, 1, 0, 0, 0, 115, 664, 1, 0, 0, 0, 117, 666, 1, 0, 0, 0, 119, 668, 1, 0, 0, 0, 121, 670, 1, 0, 0, 0, 123, 672, 1, 0, 0, 0, 125, 674, 1, 0, 0, 0, 127, 676, 1, 0, 0, 0, 129, 678, 1, 0, 0, 0, 131, 680, 1, 0, 0, 0, 133, 682, 1, 0, 0, 0, 135, 684, 1, 0, 0, 0, 137, 686, 1, 0, 0, 0, 139, 688, 1, 0, 0, 0, 141, 693, 1, 0, 0, 0, 143, 699, 1, 0, 0, 0, 145, 703, 1, 0, 0, 0, 147, 710, 1, 0, 0, 0, 149, 717, 1, 0, 0, 0, 151, 728, 1, 0, 0, 0, 153, 740, 1, 0, 0, 0, 155, 752, 1, 0, 0, 0, 157, 765, 1, 0, 0, 0, 159, 770, 1, 0, 0, 0, 161, 781, 1, 0, 0, 0, 163, 796, 1, 0, 0, 0, 165, 809, 1, 0, 0, 0, 167, 818, 1, 0, 0, 0, 169, 827, 1, 0, 0, 0, 171, 836, 1, 0, 0, 0, 173, 841, 1, 0, 0, 0, 175, 844, 1, 0, 0, 0, 177, 848, 1, 0, 0, 0, 179, 852, 1, 0, 0, 0, 181, 857, 1, 0, 0, 0, 183, 862, 1, 0, 0, 0, 185, 870, 1, 0, 0, 0, 187, 892, 1, 0, 0, 0, 189, 894, 1, 0, 0, 0, 191, 905, 1, 0, 0, 0, 193, 914, 1, 0, 0, 0, 195, 923, 1, 0, 0, 0, 197, 927, 1, 0, 0, 0, 199, 929, 1, 0, 0, 0, 201, 932, 1, 0, 0, 0, 203, 935, 1, 0, 0, 0, 205, 206, 5, 99, 0, 0, 206, 207, 5, 111, 0, 0, 207, 208, 5, 110, 0, 0, 208, 209, 5, 115, 0, 0, 209, 210, 5, 116, 0, 0, 210, 2, 1, 0, 0, 0, 211, 212, 5, 58, 0, 0, 212, 213, 5, 58, 0, 0, 213, 4, 1, 0, 0, 0, 214, 215, 5, 44, 0, 0, 215, 6, 1, 0, 0, 0, 216, 217, 5, 83, 0, 0, 217, 218, 5, 97, 0, 0, 218, 219, 5, 109, 0, 0, 219, 220, 5, 112, 0, 0, 220, 221, 5, 108, 0, 0, 221, 222, 5, 101, 0, 0, 222, 223, 5, 114, 0, 0, 223, 8, 1, 0, 0, 0, 224, 225, 5, 100, 0, 0, 225, 226, 5, 101, 0, 0, 226, 227, 5, 102, 0, 0, 227, 228, 5, 105, 0, 0, 228, 229, 5, 110, 0, 0, 229, 230, 5, 101, 0, 0, 230, 10, 1, 0, 0, 0, 231, 232, 5, 114, 0, 0, 232, 233, 5, 116, 0, 0, 233, 234, 5, 118, 0, 0, 234, 12, 1, 0, 0, 0, 235, 236, 5, 98, 0, 0, 236, 237, 5, 108, 0, 0, 237, 238, 5, 101, 0, 0, 238, 239, 5, 110, 0, 0, 239, 240, 5, 100, 0, 0, 240, 14, 1, 0, 0, 0, 241, 242, 5, 58, 0, 0, 242, 16, 1, 0, 0, 0, 243, 244, 5, 108, 0, 0, 244, 245, 5, 97, 0, 0, 245, 246, 5, 117, 0, 0, 246, 247, 5, 110, 0, 0, 247, 248, 5, 99, 0, 0, 248, 249, 5, 104, 0, 0, 249, 18, 1, 0, 0, 0, 250, 251, 5, 101, 0, 0, 251, 252, 5, 110, 0, 0, 252, 253, 5, 116, 0, 0, 253, 254, 5, 114, 0, 0, 254, 255, 5, 121, 0, 0, 255, 20, 1, 0, 0, 0, 256, 257, 5, 110, 0, 0, 257, 258, 5, 117, 0, 0, 258, 259, 5, 109, 0, 0, 259, 260, 5, 95, 0, 0, 260, 261, 5, 116, 0, 0, 261, 262, 5, 104, 0, 0, 262, 263, 5, 114, 0, 0, 263, 264, 5, 101, 0, 0, 264, 265, 5, 97, 0, 0, 265, 266, 5, 100, 0, 0, 266, 267, 5, 115, 0, 0, 267, 22, 1, 0, 0, 0, 268, 269, 5, 109, 0, 0, 269, 270, 5, 97, 0, 0, 270, 271, 5, 120, 0, 0, 271, 272, 5, 95, 0, 0, 272, 273, 5, 100, 0, 0, 273, 274, 5, 105, 0, 0, 274, 275, 5, 115, 0, 0, 275, 276, 5, 112, 0, 0, 276, 277, 5, 97, 0, 0, 277, 278, 5, 116, 0, 0, 278, 279, 5, 99, 0, 0, 279, 280, 5, 104, 0, 0, 280, 281, 5, 95, 0, 0, 281, 282, 5, 103, 0, 0, 282, 283, 5, 114, 0, 0, 283, 284, 5, 105, 0, 0, 284, 285, 5, 100, 0, 0, 285, 24, 1, 0, 0, 0, 286, 287, 5, 105, 0, 0, 287, 288, 5, 110, 0, 0, 288, 289, 5, 112, 0, 0, 289, 290, 5, 117, 0, 0, 290, 291, 5, 116, 0, 0, 291, 26, 1, 0, 0, 0, 292, 293, 5, 99, 0, 0, 293, 294, 5, 111, 0, 0, 294, 295, 5, 109, 0, 0, 295, 296, 5, 112, 0, 0, 296, 297, 5, 117, 0, 0, 297, 298, 5, 116, 0, 0, 298, 299, 5, 101, 0, 0, 299, 28, 1, 0, 0, 0, 300, 301, 5, 118, 0, 0, 301, 302, 5, 101, 0, 0, 302, 303, 5, 114, 0, 0, 303, 304, 5, 116, 0, 0, 304, 305, 5, 101, 0, 0, 305, 306, 5, 120, 0, 0, 306, 30, 1, 0, 0, 0, 307, 308, 5, 112, 0, 0, 308, 309, 5, 105, 0, 0, 309, 310, 5, 120, 0, 0, 310, 311, 5, 101, 0, 0, 311, 312, 5, 108, 0, 0, 312, 32, 1, 0, 0, 0, 313, 314, 5, 100, 0, 0, 314, 315, 5, 111, 0, 0, 315, 316, 5, 109, 0, 0, 316, 317, 5, 97, 0, 0, 317, 318, 5, 105, 0, 0, 318, 319, 5, 110, 0, 0, 319, 34, 1, 0, 0, 0, 320, 321, 5, 104, 0, 0, 321, 322, 5, 117, 0, 0, 322, 323, 5, 108, 0, 0, 323, 324, 5, 108, 0, 0, 324, 36, 1, 0, 0, 0, 325, 326, 5, 103, 0, 0, 326, 327, 5, 101, 0, 0, 327, 328, 5, 111, 0, 0, 328, 329, 5, 109, 0, 0, 329, 330, 5, 101, 0, 0, 330, 331, 5, 116, 0, 0, 331, 332, 5, 114, 0, 0, 332, 333, 5, 121, 0, 0, 333, 38, 1, 0, 0, 0, 334, 335, 5, 109, 0, 0, 335, 336, 5, 105, 0, 0, 336, 337, 5, 115, 0, 0, 337, 338, 5, 115, 0, 0, 338, 40, 1, 0, 0, 0, 339, 340, 5, 99, 0, 0, 340, 341, 5, 108, 0, 0, 341, 342, 5, 111, 0, 0, 342, 343, 5, 115, 0, 0, 343, 344, 5, 101, 0, 0, 344, 345, 5, 115, 0, 0, 345, 346, 5, 116, 0, 0, 346, 347, 5, 95, 0, 0, 347, 348, 5, 104, 0, 0, 348, 349, 5, 105, 0, 0, 349, 350, 5, 116, 0, 0, 350, 42, 1, 0, 0, 0, 351, 352, 5, 97, 0, 0, 352, 353, 5, 110, 0, 0, 353, 354, 5, 121, 0, 0, 354, 355, 5, 95, 0, 0, 355, 356, 5, 104, 0, 0, 356, 357, 5, 105, 0, 0, 357, 358, 5, 116, 0, 0, 358, 44, 1, 0, 0, 0, 359, 360, 5, 114, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 121, 0, 0, 362, 363, 5, 103, 0, 0, 363, 364, 5, 101, 0, 0, 364, 365, 5, 110, 0, 0, 365, 46, 1, 0, 0, 0, 366, 367, 5, 97, 0, 0, 367, 368, 5, 109, 0, 0, 368, 369, 5, 112, 0, 0, 369, 370, 5, 108, 0, 0, 370, 371, 5, 105, 0, 0, 371, 372, 5, 102, 0, 0, 372, 373, 5, 105, 0, 0, 373, 374, 5, 99, 0, 0, 374, 375, 5, 97, 0, 0, 375, 376, 5, 116, 0, 0, 376, 377, 5, 105, 0, 0, 377, 378, 5, 111, 0, 0, 378, 379, 5, 110, 0, 0, 379, 48, 1, 0, 0, 0, 380, 381, 5, 109, 0, 0, 381, 382, 5, 101, 0, 0, 382, 383, 5, 115, 0, 0, 383, 384, 5, 104, 0, 0, 384, 50, 1, 0, 0, 0, 385, 386, 5, 115, 0, 0, 386, 387, 5, 104, 0, 0, 387, 388, 5, 97, 0, 0, 388, 389, 5, 100, 0, 0, 389, 390, 5, 101, 0, 0, 390, 391, 5, 114, 0, 0, 391, 52, 1, 0, 0, 0, 392, 393, 5, 100, 0, 0, 393, 394, 5, 115, 0, 0, 394, 54, 1, 0, 0, 0, 395, 396, 5, 99, 0, 0, 396, 397, 5, 117, 0, 0, 397, 398, 5, 108, 0, 0, 398, 399, 5, 108, 0, 0, 399, 56, 1, 0, 0, 0, 400, 401, 5, 100, 0, 0, 401, 402, 5, 101, 0, 0, 402, 403, 5, 112, 0, 0, 403, 404, 5, 116, 0, 0, 404, 405, 5, 104, 0, 0, 405, 406, 5, 95, 0, 0, 406, 407, 5, 102, 0, 0, 407, 408, 5, 117, 0, 0, 408, 409, 5, 110, 0, 0, 409, 410, 5, 99, 0, 0, 410, 58, 1, 0, 0, 0, 411, 412, 5, 100, 0, 0, 412, 413, 5, 101, 0, 0, 413, 414, 5, 112, 0, 0, 414, 415, 5, 116, 0, 0, 415, 416, 5, 104, 0, 0, 416, 417, 5, 95, 0, 0, 417, 418, 5, 119, 0, 0, 418, 419, 5, 114, 0, 0, 419, 420, 5, 105, 0, 0, 420, 421, 5, 116, 0, 0, 421, 422, 5, 101, 0, 0, 422, 60, 1, 0, 0, 0, 423, 424, 5, 99, 0, 0, 424, 425, 5, 111, 0, 0, 425, 426, 5, 110, 0, 0, 426, 427, 5, 115, 0, 0, 427, 428, 5, 101, 0, 0, 428, 429, 5, 114, 0, 0, 429, 430, 5, 118, 0, 0, 430, 431, 5, 97, 0, 0, 431, 432, 5, 116, 0, 0, 432, 433, 5, 105, 0, 0, 433, 434, 5, 118, 0, 0, 434, 435, 5, 101, 0, 0, 435, 62, 1, 0, 0, 0, 436, 437, 5, 100, 0, 0, 437, 438, 5, 101, 0, 0, 438, 439, 5, 112, 0, 0, 439, 440, 5, 116, 0, 0, 440, 441, 5, 104, 0, 0, 441, 442, 5, 95, 0, 0, 442, 443, 5, 98, 0, 0, 443, 444, 5, 105, 0, 0, 444, 445, 5, 97, 0, 0, 445, 446, 5, 115, 0, 0, 446, 64, 1, 0, 0, 0, 447, 448, 5, 100, 0, 0, 448, 449, 5, 101, 0, 0, 449, 450, 5, 112, 0, 0, 450, 451, 5, 116, 0, 0, 451, 452, 5, 104, 0, 0, 452, 453, 5, 95, 0, 0, 453, 454, 5, 98, 0, 0, 454, 455, 5, 105, 0, 0, 455, 456, 5, 97, 0, 0, 456, 457, 5, 115, 0, 0, 457, 458, 5, 95, 0, 0, 458, 459, 5, 99, 0, 0, 459, 460, 5, 108, 0, 0, 460, 461, 5, 97, 0, 0, 461, 462, 5, 109, 0, 0, 462, 463, 5, 112, 0, 0, 463, 66, 1, 0, 0, 0, 464, 465, 5, 115, 0, 0, 465, 466, 5, 108, 0, 0, 466, 467, 5, 111, 0, 0, 467, 468, 5, 112, 0, 0, 468, 469, 5, 101, 0, 0, 469, 470, 5, 95, 0, 0, 470, 471, 5, 115, 0, 0, 471, 472, 5, 99, 0, 0, 472, 473, 5, 97, 0, 0, 473, 474, 5, 108, 0, 0, 474, 475, 5, 101, 0, 0, 475, 476, 5, 100, 0, 0, 476, 477, 5, 95, 0, 0, 477, 478, 5, 100, 0, 0, 478, 479, 5, 101, 0, 0, 479, 480, 5, 112, 0, 0, 480, 481, 5, 116, 0, 0, 481, 482, 5, 104, 0, 0, 482, 483, 5, 95, 0, 0, 483, 484, 5, 98, 0, 0, 484, 485, 5, 105, 0, 0, 485, 486, 5, 97, 0, 0, 486, 487, 5, 115, 0, 0, 487, 68, 1, 0, 0, 0, 488, 489, 5, 101, 0, 0, 489, 490, 5, 110, 0, 0, 490, 491, 5, 97, 0, 0, 491, 492, 5, 98, 0, 0, 492, 493, 5, 108, 0, 0, 493, 494, 5, 101, 0, 0, 494, 495, 5, 95, 0, 0, 495, 496, 5, 100, 0, 0, 496, 497, 5, 101, 0, 0, 497, 498, 5, 112, 0, 0, 498, 499, 5, 116, 0, 0, 499, 500, 5, 104, 0, 0, 500, 70, 1, 0, 0, 0, 501, 502, 5, 116, 0, 0, 502, 503, 5, 111, 0, 0, 503, 504, 5, 112, 0, 0, 504, 505, 5, 111, 0, 0, 505, 506, 5, 108, 0, 0, 506, 507, 5, 111, 0, 0, 507, 508, 5, 103, 0, 0, 508, 509, 5, 121, 0, 0, 509, 72, 1, 0, 0, 0, 510, 511, 5, 101, 0, 0, 511, 512, 5, 110, 0, 0, 512, 513, 5, 97, 0, 0, 513, 514, 5, 98, 0, 0, 514, 515, 5, 108, 0, 0, 515, 516, 5, 101, 0, 0, 516, 517, 5, 95, 0, 0, 517, 518, 5, 115, 0, 0, 518, 519, 5, 116, 0, 0, 519, 520, 5, 101, 0, 0, 520, 521, 5, 110, 0, 0, 521, 522, 5, 99, 0, 0, 522, 523, 5, 105, 0, 0, 523, 524, 5, 108, 0, 0, 524, 74, 1, 0, 0, 0, 525, 526, 5, 115, 0, 0, 526, 527, 5, 116, 0, 0, 527, 528, 5, 101, 0, 0, 528, 529, 5, 110, 0, 0, 529, 530, 5, 99, 0, 0, 530, 531, 5, 105, 0, 0, 531, 532, 5, 108, 0, 0, 532, 533, 5, 95, 0, 0, 533, 534, 5, 102, 0, 0, 534, 535, 5, 117, 0, 0, 535, 536, 5, 110, 0, 0, 536, 537, 5, 99, 0, 0, 537, 76, 1, 0, 0, 0, 538, 539, 5, 115, 0, 0, 539, 540, 5, 116, 0, 0, 540, 541, 5, 101, 0, 0, 541, 542, 5, 110, 0, 0, 542, 543, 5, 99, 0, 0, 543, 544, 5, 105, 0, 0, 544, 545, 5, 108, 0, 0, 545, 546, 5, 95, 0, 0, 546, 547, 5, 112, 0, 0, 547, 548, 5, 97, 0, 0, 548, 549, 5, 115, 0, 0, 549, 550, 5, 115, 0, 0, 550, 551, 5, 95, 0, 0, 551, 552, 5, 111, 0, 0, 552, 553, 5, 112, 0, 0, 553, 78, 1, 0, 0, 0, 554, 555, 5, 115, 0, 0, 555, 556, 5, 116, 0, 0, 556, 557, 5, 101, 0, 0, 557, 558, 5, 110, 0, 0, 558, 559, 5, 99, 0, 0, 559, 560, 5, 105, 0, 0, 560, 561, 5, 108, 0, 0, 561, 562, 5, 95, 0, 0, 562, 563, 5, 114, 0, 0, 563, 564, 5, 101, 0, 0, 564, 565, 5, 97, 0, 0, 565, 566, 5, 100, 0, 0, 566, 567, 5, 95, 0, 0, 567, 568, 5, 109, 0, 0, 568, 569, 5, 97, 0, 0, 569, 570, 5, 115, 0, 0, 570, 571, 5, 107, 0, 0, 571, 80, 1, 0, 0, 0, 572, 573, 5, 115, 0, 0, 573, 574, 5, 116, 0, 0, 574, 575, 5, 101, 0, 0, 575, 576, 5, 110, 0, 0, 576, 577, 5, 99, 0, 0, 577, 578, 5, 105, 0, 0, 578, 579, 5, 108, 0, 0, 579, 580, 5, 95, 0, 0, 580, 581, 5, 119, 0, 0, 581, 582, 5, 114, 0, 0, 582, 583, 5, 105, 0, 0, 583, 584, 5, 116, 0, 0, 584, 585, 5, 101, 0, 0, 585, 586, 5, 95, 0, 0, 586, 587, 5, 109, 0, 0, 587, 588, 5, 97, 0, 0, 588, 589, 5, 115, 0, 0, 589, 590, 5, 107, 0, 0, 590, 82, 1, 0, 0, 0, 591, 592, 5, 114, 0, 0, 592, 593, 5, 101, 0, 0, 593, 594, 5, 99, 0, 0, 594, 595, 5, 117, 0, 0, 595, 596, 5, 114, 0, 0, 596, 597, 5, 115, 0, 0, 597, 598, 5, 105, 0, 0, 598, 599, 5, 111, 0, 0, 599, 600, 5, 110, 0, 0, 600, 601, 5, 95, 0, 0, 601, 602, 5, 100, 0, 0, 602, 603, 5, 101, 0, 0, 603, 604, 5, 112, 0, 0, 604, 605, 5, 116, 0, 0, 605, 606, 5, 104, 0, 0, 606, 84, 1, 0, 0, 0, 607, 608, 5, 112, 0, 0, 608, 609, 5, 97, 0, 0, 609, 610, 5, 121, 0, 0, 610, 611, 5, 108, 0, 0, 611, 612, 5, 111, 0, 0, 612, 613, 5, 97, 0, 0, 613, 614, 5, 100, 0, 0, 614, 86, 1, 0, 0, 0, 615, 616, 5, 112, 0, 0, 616, 617, 5, 101, 0, 0, 617, 618, 5, 114, 0, 0, 618, 619, 5, 95, 0, 0, 619, 620, 5, 109, 0, 0, 620, 621, 5, 97, 0, 0, 621, 622, 5, 116, 0, 0, 622, 623, 5, 101, 0, 0, 623, 624, 5, 114, 0, 0, 624, 625, 5, 105, 0, 0, 625, 626, 5, 97, 0, 0, 626, 627, 5, 108, 0, 0, 627, 88, 1, 0, 0, 0, 628, 629, 5, 108, 0, 0, 629, 630, 5, 111, 0, 0, 630, 631, 5, 99, 0, 0, 631, 632, 5, 97, 0, 0, 632, 633, 5, 108, 0, 0, 633, 90, 1, 0, 0, 0, 634, 635, 5, 124, 0, 0, 635, 636, 5, 124, 0, 0, 636, 92, 1, 0, 0, 0, 637, 638, 5, 38, 0, 0, 638, 639, 5, 38, 0, 0, 639, 94, 1, 0, 0, 0, 640, 641, 5, 124, 0, 0, 641, 96, 1, 0, 0, 0, 642, 643, 5, 61, 0, 0, 643, 644, 5, 61, 0, 0, 644, 98, 1, 0, 0, 0, 645, 646, 5, 33, 0, 0, 646, 647, 5, 61, 0, 0, 647, 100, 1, 0, 0, 0, 648, 649, 5, 62, 0, 0, 649, 102, 1, 0, 0, 0, 650, 651, 5, 60, 0, 0, 651, 104, 1, 0, 0, 0, 652, 653, 5, 62, 0, 0, 653, 654, 5, 61, 0, 0, 654, 106, 1, 0, 0, 0, 655, 656, 5, 60, 0, 0, 656, 657, 5, 61, 0, 0, 657, 108, 1, 0, 0, 0, 658, 659, 5, 43, 0, 0, 659, 110, 1, 0, 0, 0, 660, 661, 5, 45, 0, 0, 661, 112, 1, 0, 0, 0, 662, 663, 5, 47, 0, 0, 663, 114, 1, 0, 0, 0, 664, 665, 5, 37, 0, 0, 665, 116, 1, 0, 0, 0, 666, 667, 5, 94, 0, 0, 667, 118, 1, 0, 0, 0, 668, 669, 5, 33, 0, 0, 669, 120, 1, 0, 0, 0, 670, 671, 5, 59, 0, 0, 671, 122, 1, 0, 0, 0, 672, 673, 5, 46, 0, 0, 673, 124, 1, 0, 0, 0, 674, 675, 5, 61, 0, 0, 675, 126, 1, 0, 0, 0, 676, 677, 5, 40, 0, 0, 677, 128, 1, 0, 0, 0, 678, 679, 5, 41, 0, 0, 679, 130, 1, 0, 0, 0, 680, 681, 5, 123, 0, 0, 681, 132, 1, 0, 0, 0, 682, 683, 5, 125, 0, 0, 683, 134, 1, 0, 0, 0, 684, 685, 5, 91, 0, 0, 685, 136, 1, 0, 0, 0, 686, 687, 5, 93, 0, 0, 687, 138, 1, 0, 0, 0, 688, 689, 5, 116, 0, 0, 689, 690, 5, 114, 0, 0, 690, 691, 5, 117, 0, 0, 691, 692, 5, 101, 0, 0, 692, 140, 1, 0, 0, 0, 693, 694, 5, 102, 0, 0, 694, 695, 5, 97, 0, 0, 695, 696, 5, 108, 0, 0, 696, 697, 5, 115, 0, 0, 697, 698, 5, 101, 0, 0, 698, 142, 1, 0, 0, 0, 699, 700, 5, 108, 0, 0, 700, 701, 5, 111, 0, 0, 701, 702, 5, 103, 0, 0, 702, 144, 1, 0, 0, 0, 703, 704, 5, 108, 0, 0, 704, 705, 5, 97, 0, 0, 705, 706, 5, 121, 0, 0, 706, 707, 5, 111, 0, 0, 707, 708, 5, 117, 0, 0, 708, 709, 5, 116, 0, 0, 709, 146, 1, 0, 0, 0, 710, 711, 5, 115, 0, 0, 711, 712, 5, 116, 0, 0, 712, 713, 5, 114, 0, 0, 713, 714, 5, 117, 0, 0, 714, 715, 5, 99, 0, 0, 715, 716, 5, 116, 0, 0, 716, 148, 1, 0, 0, 0, 717, 718, 5, 67, 0, 0, 718, 719, 5, 111, 0, 0, 719, 720, 5, 109, 0, 0, 720, 721, 5, 112, 0, 0, 721, 722, 5, 117, 0, 0, 722, 723, 5, 116, 0, 0, 723, 724, 5, 101, 0, 0, 724, 725, 5, 80, 0, 0, 725, 726, 5, 83, 0, 0, 726, 727, 5, 79, 0, 0, 727, 150, 1, 0, 0, 0, 728, 729, 5, 71, 0, 0, 729, 730, 5, 114, 0, 0, 730, 731, 5, 97, 0, 0, 731, 732, 5, 112, 0, 0, 732, 733, 5, 104, 0, 0, 733, 734, 5, 105, 0, 0, 734, 735, 5, 99, 0, 0, 735, 736, 5, 115, 0, 0, 736, 737, 5, 80, 0, 0, 737, 738, 5, 83, 0, 0, 738, 739, 5, 79, 0, 0, 739, 152, 1, 0, 0, 0, 740, 741, 5, 82, 0, 0, 741, 742, 5, 97, 0, 0, 742, 743, 5, 121, 0, 0, 743, 744, 5, 116, 0, 0, 744, 745, 5, 114, 0, 0, 745, 746, 5, 97, 0, 0, 746, 747, 5, 99, 0, 0, 747, 748, 5, 101, 0, 0, 748, 749, 5, 80, 0, 0, 749, 750, 5, 83, 0, 0, 750, 751, 5, 79, 0, 0, 751, 154, 1, 0, 0, 0, 752, 753, 5, 87, 0, 0, 753, 754, 5, 111, 0, 0, 754, 755, 5, 114, 0, 0, 755, 756, 5, 107, 0, 0, 756, 757, 5, 103, 0, 0, 757, 758, 5, 114, 0, 0, 758, 759, 5, 97, 0, 0, 759, 760, 5, 112, 0, 0, 760, 761, 5, 104, 0, 0, 761, 762, 5, 80, 0, 0, 762, 763, 5, 83, 0, 0, 763, 764, 5, 79, 0, 0, 764, 156, 1, 0, 0, 0, 765, 766, 5, 78, 0, 0, 766, 767, 5, 111, 0, 0, 767, 768, 5, 100, 0, 0, 768, 769, 5, 101, 0, 0, 769, 158, 1, 0, 0, 0, 770, 771, 5, 78, 0, 0, 771, 772, 5, 111, 0, 0, 772, 773, 5, 100, 0, 0, 773, 774, 5, 101, 0, 0, 774, 775, 5, 79, 0, 0, 775, 776, 5, 117, 0, 0, 776, 777, 5, 116, 0, 0, 777, 778, 5, 112, 0, 0, 778, 779, 5, 117, 0, 0, 779, 780, 5, 116, 0, 0, 780, 160, 1, 0, 0, 0, 781, 782, 5, 82, 0, 0, 782, 783, 5, 97, 0, 0, 783, 784, 5, 121, 0, 0, 784, 785, 5, 116, 0, 0, 785, 786, 5, 114, 0, 0, 786, 787, 5, 97, 0, 0, 787, 788, 5, 99, 0, 0, 788, 789, 5, 101, 0, 0, 789, 790, 5, 82, 0, 0, 790, 791, 5, 97, 0, 0, 791, 792, 5, 121, 0, 0, 792, 793, 5, 103, 0, 0, 793, 794, 5, 101, 0, 0, 794, 795, 5, 110, 0, 0, 795, 162, 1, 0, 0, 0, 796, 797, 5, 82, 0, 0, 797, 798, 5, 97, 0, 0, 798, 799, 5, 121, 0, 0, 799, 800, 5, 116, 0, 0, 800, 801, 5, 114, 0, 0, 801, 802, 5, 97, 0, 0, 802, 803, 5, 99, 0, 0, 803, 804, 5, 101, 0, 0, 804, 805, 5, 80, 0, 0, 805, 806, 5, 97, 0, 0, 806, 807, 5, 115, 0, 0, 807, 808, 5, 115, 0, 0, 808, 164, 1, 0, 0, 0, 809, 810, 5, 80, 0, 0, 810, 811, 5, 97, 0, 0, 811, 812, 5, 115, 0, 0, 812, 813, 5, 115, 0, 0, 813, 814, 5, 78, 0, 0, 814, 815, 5, 111, 0, 0, 815, 816, 5, 100, 0, 0, 816, 817, 5, 101, 0, 0, 817, 166, 1, 0, 0, 0, 818, 819, 5, 80, 0, 0, 819, 820, 5, 97, 0, 0, 820, 821, 5, 115, 0, 0, 821, 822, 5, 115, 0, 0, 822, 823, 5, 86, 0, 0, 823, 824, 5, 105, 0, 0, 824, 825, 5, 101, 0, 0, 825, 826, 5, 119, 0, 0, 826, 168, 1, 0, 0, 0, 827, 828, 5, 80, 0, 0, 828, 829, 5, 105, 0, 0, 829, 830, 5, 112, 0, 0, 830, 831, 5, 101, 0, 0, 831, 832, 5, 108, 0, 0, 832, 833, 5, 105, 0, 0, 833, 834, 5, 110, 0, 0, 834, 835, 5, 101, 0, 0, 835, 170, 1, 0, 0, 0, 836, 837, 5, 115, 0, 0, 837, 838, 5, 108, 0, 0, 838, 839, 5, 111, 0, 0, 839, 840, 5, 116, 0, 0, 840, 172, 1, 0, 0, 0, 841, 842, 5, 114, 0, 0, 842, 843, 5, 116, 0, 0, 843, 174, 1, 0, 0, 0, 844, 845, 5, 82, 0, 0, 845, 846, 5, 84, 0, 0, 846, 847, 5, 86, 0, 0, 847, 176, 1, 0, 0, 0, 848, 849, 5, 68, 0, 0, 849, 850, 5, 83, 0, 0, 850, 851, 5, 86, 0, 0, 851, 178, 1, 0, 0, 0, 852, 853, 5, 114, 0, 0, 853, 854, 5, 111, 0, 0, 854, 855, 5, 111, 0, 0, 855, 856, 5, 116, 0, 0, 856, 180, 1, 0, 0, 0, 857, 858, 5, 101, 0, 0, 858, 859, 5, 110, 0, 0, 859, 860, 5, 117, 0, 0, 860, 861, 5, 109, 0, 0, 861, 182, 1, 0, 0, 0, 862, 866, 7, 0, 0, 0, 863, 865, 7, 1, 0, 0, 864, 863, 1, 0, 0, 0, 865, 868, 1, 0, 0, 0, 866, 864, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 184, 1, 0, 0, 0, 868, 866, 1, 0, 0, 0, 869, 871, 7, 2, 0, 0, 870, 869, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 186, 1, 0, 0, 0, 874, 876, 7, 2, 0, 0, 875, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 883, 5, 46, 0, 0, 880, 882, 7, 2, 0, 0, 881, 880, 1, 0, 0, 0, 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 893, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 888, 5, 46, 0, 0, 887, 889, 7, 2, 0, 0, 888, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 888, 1, 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 893, 1, 0, 0, 0, 892, 875, 1, 0, 0, 0, 892, 886, 1, 0, 0, 0, 893, 188, 1, 0, 0, 0, 894, 900, 5, 34, 0, 0, 895, 899, 8, 3, 0, 0, 896, 897, 5, 34, 0, 0, 897, 899, 5, 34, 0, 0, 898, 895, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 903, 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 34, 0, 0, 904, 190, 1, 0, 0, 0, 905, 909, 5, 96, 0, 0, 906, 908, 8, 4, 0, 0, 907, 906, 1, 0, 0, 0, 908, 911, 1, 0, 0, 0, 909, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 912, 1, 0, 0, 0, 911, 909, 1, 0, 0, 0, 912, 913, 5, 96, 0, 0, 913, 192, 1, 0, 0, 0, 914, 918, 5, 35, 0, 0, 915, 917, 8, 5, 0, 0, 916, 915, 1, 0, 0, 0, 917, 920, 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 919, 1, 0, 0, 0, 919, 921, 1, 0, 0, 0, 920, 918, 1, 0, 0, 0, 921, 922, 6, 96, 0, 0, 922, 194, 1, 0, 0, 0, 923, 924, 7, 6, 0, 0, 924, 925, 1, 0, 0, 0, 925, 926, 6, 97, 0, 0, 926, 196, 1, 0, 0, 0, 927, 928, 5, 42, 0, 0, 928, 198, 1, 0, 0, 0, 929, 930, 5, 37, 0, 0, 930, 931, 5, 123, 0, 0, 931, 200, 1, 0, 0, 0, 932, 933, 5, 125, 0, 0, 933, 934, 5, 37, 0, 0, 934, 202, 1, 0, 0, 0, 935, 939, 3, 199, 99, 0, 936, 938, 9, 0, 0, 0, 937, 936, 1, 0, 0, 0, 938, 941, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 940, 942, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 942, 943, 3, 201, 100, 0, 943, 204, 1, 0, 0, 0, 12, 0, 866, 872, 877, 883, 890, 892, 898, 900, 909, 918, 939, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 103, 997, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 5, 91, 871, 8, 91, 10, 91, 12, 91, 874, 9, 91, 1, 92, 4, 92, 877, 8, 92, 11, 92, 12, 92, 878, 1, 93, 4, 93, 882, 8, 93, 11, 93, 12, 93, 883, 1, 93, 1, 93, 5, 93, 888, 8, 93, 10, 93, 12, 93, 891, 9, 93, 1, 93, 1, 93, 4, 93, 895, 8, 93, 11, 93, 12, 93, 896, 3, 93, 899, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 5, 94, 905, 8, 94, 10, 94, 12, 94, 908, 9, 94, 1, 94, 1, 94, 1, 95, 1, 95, 5, 95, 914, 8, 95, 10, 95, 12, 95, 917, 9, 95, 1, 95, 1, 95, 1, 96, 1, 96, 5, 96, 923, 8, 96, 10, 96, 12, 96, 926, 9, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 948, 8, 101, 10, 101, 12, 101, 951, 9, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 957, 8, 101, 10, 101, 12, 101, 960, 9, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 968, 8, 101, 10, 101, 12, 101, 971, 9, 101, 1, 101, 1, 101, 1, 101, 5, 101, 976, 8, 101, 10, 101, 12, 101, 979, 9, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 5, 104, 991, 8, 104, 10, 104, 12, 104, 994, 9, 104, 1, 104, 1, 104, 2, 958, 992, 0, 105, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 0, 203, 0, 205, 101, 207, 102, 209, 103, 1, 0, 9, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 10, 10, 13, 13, 34, 34, 1, 0, 96, 96, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 34, 34, 47, 47, 123, 123, 125, 125, 1015, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 1, 211, 1, 0, 0, 0, 3, 217, 1, 0, 0, 0, 5, 220, 1, 0, 0, 0, 7, 222, 1, 0, 0, 0, 9, 230, 1, 0, 0, 0, 11, 237, 1, 0, 0, 0, 13, 241, 1, 0, 0, 0, 15, 247, 1, 0, 0, 0, 17, 254, 1, 0, 0, 0, 19, 260, 1, 0, 0, 0, 21, 272, 1, 0, 0, 0, 23, 290, 1, 0, 0, 0, 25, 296, 1, 0, 0, 0, 27, 304, 1, 0, 0, 0, 29, 311, 1, 0, 0, 0, 31, 317, 1, 0, 0, 0, 33, 324, 1, 0, 0, 0, 35, 329, 1, 0, 0, 0, 37, 338, 1, 0, 0, 0, 39, 343, 1, 0, 0, 0, 41, 355, 1, 0, 0, 0, 43, 363, 1, 0, 0, 0, 45, 370, 1, 0, 0, 0, 47, 384, 1, 0, 0, 0, 49, 389, 1, 0, 0, 0, 51, 396, 1, 0, 0, 0, 53, 399, 1, 0, 0, 0, 55, 404, 1, 0, 0, 0, 57, 415, 1, 0, 0, 0, 59, 427, 1, 0, 0, 0, 61, 440, 1, 0, 0, 0, 63, 451, 1, 0, 0, 0, 65, 468, 1, 0, 0, 0, 67, 492, 1, 0, 0, 0, 69, 505, 1, 0, 0, 0, 71, 514, 1, 0, 0, 0, 73, 529, 1, 0, 0, 0, 75, 542, 1, 0, 0, 0, 77, 558, 1, 0, 0, 0, 79, 576, 1, 0, 0, 0, 81, 595, 1, 0, 0, 0, 83, 611, 1, 0, 0, 0, 85, 619, 1, 0, 0, 0, 87, 632, 1, 0, 0, 0, 89, 638, 1, 0, 0, 0, 91, 641, 1, 0, 0, 0, 93, 644, 1, 0, 0, 0, 95, 646, 1, 0, 0, 0, 97, 649, 1, 0, 0, 0, 99, 652, 1, 0, 0, 0, 101, 654, 1, 0, 0, 0, 103, 656, 1, 0, 0, 0, 105, 659, 1, 0, 0, 0, 107, 662, 1, 0, 0, 0, 109, 664, 1, 0, 0, 0, 111, 666, 1, 0, 0, 0, 113, 668, 1, 0, 0, 0, 115, 670, 1, 0, 0, 0, 117, 672, 1, 0, 0, 0, 119, 674, 1, 0, 0, 0, 121, 676, 1, 0, 0, 0, 123, 678, 1, 0, 0, 0, 125, 680, 1, 0, 0, 0, 127, 682, 1, 0, 0, 0, 129, 684, 1, 0, 0, 0, 131, 686, 1, 0, 0, 0, 133, 688, 1, 0, 0, 0, 135, 690, 1, 0, 0, 0, 137, 692, 1, 0, 0, 0, 139, 694, 1, 0, 0, 0, 141, 699, 1, 0, 0, 0, 143, 705, 1, 0, 0, 0, 145, 709, 1, 0, 0, 0, 147, 716, 1, 0, 0, 0, 149, 723, 1, 0, 0, 0, 151, 734, 1, 0, 0, 0, 153, 746, 1, 0, 0, 0, 155, 758, 1, 0, 0, 0, 157, 771, 1, 0, 0, 0, 159, 776, 1, 0, 0, 0, 161, 787, 1, 0, 0, 0, 163, 802, 1, 0, 0, 0, 165, 815, 1, 0, 0, 0, 167, 824, 1, 0, 0, 0, 169, 833, 1, 0, 0, 0, 171, 842, 1, 0, 0, 0, 173, 847, 1, 0, 0, 0, 175, 850, 1, 0, 0, 0, 177, 854, 1, 0, 0, 0, 179, 858, 1, 0, 0, 0, 181, 863, 1, 0, 0, 0, 183, 868, 1, 0, 0, 0, 185, 876, 1, 0, 0, 0, 187, 898, 1, 0, 0, 0, 189, 900, 1, 0, 0, 0, 191, 911, 1, 0, 0, 0, 193, 920, 1, 0, 0, 0, 195, 929, 1, 0, 0, 0, 197, 933, 1, 0, 0, 0, 199, 935, 1, 0, 0, 0, 201, 939, 1, 0, 0, 0, 203, 977, 1, 0, 0, 0, 205, 982, 1, 0, 0, 0, 207, 985, 1, 0, 0, 0, 209, 988, 1, 0, 0, 0, 211, 212, 5, 99, 0, 0, 212, 213, 5, 111, 0, 0, 213, 214, 5, 110, 0, 0, 214, 215, 5, 115, 0, 0, 215, 216, 5, 116, 0, 0, 216, 2, 1, 0, 0, 0, 217, 218, 5, 58, 0, 0, 218, 219, 5, 58, 0, 0, 219, 4, 1, 0, 0, 0, 220, 221, 5, 44, 0, 0, 221, 6, 1, 0, 0, 0, 222, 223, 5, 83, 0, 0, 223, 224, 5, 97, 0, 0, 224, 225, 5, 109, 0, 0, 225, 226, 5, 112, 0, 0, 226, 227, 5, 108, 0, 0, 227, 228, 5, 101, 0, 0, 228, 229, 5, 114, 0, 0, 229, 8, 1, 0, 0, 0, 230, 231, 5, 100, 0, 0, 231, 232, 5, 101, 0, 0, 232, 233, 5, 102, 0, 0, 233, 234, 5, 105, 0, 0, 234, 235, 5, 110, 0, 0, 235, 236, 5, 101, 0, 0, 236, 10, 1, 0, 0, 0, 237, 238, 5, 114, 0, 0, 238, 239, 5, 116, 0, 0, 239, 240, 5, 118, 0, 0, 240, 12, 1, 0, 0, 0, 241, 242, 5, 98, 0, 0, 242, 243, 5, 108, 0, 0, 243, 244, 5, 101, 0, 0, 244, 245, 5, 110, 0, 0, 245, 246, 5, 100, 0, 0, 246, 14, 1, 0, 0, 0, 247, 248, 5, 108, 0, 0, 248, 249, 5, 97, 0, 0, 249, 250, 5, 117, 0, 0, 250, 251, 5, 110, 0, 0, 251, 252, 5, 99, 0, 0, 252, 253, 5, 104, 0, 0, 253, 16, 1, 0, 0, 0, 254, 255, 5, 101, 0, 0, 255, 256, 5, 110, 0, 0, 256, 257, 5, 116, 0, 0, 257, 258, 5, 114, 0, 0, 258, 259, 5, 121, 0, 0, 259, 18, 1, 0, 0, 0, 260, 261, 5, 110, 0, 0, 261, 262, 5, 117, 0, 0, 262, 263, 5, 109, 0, 0, 263, 264, 5, 95, 0, 0, 264, 265, 5, 116, 0, 0, 265, 266, 5, 104, 0, 0, 266, 267, 5, 114, 0, 0, 267, 268, 5, 101, 0, 0, 268, 269, 5, 97, 0, 0, 269, 270, 5, 100, 0, 0, 270, 271, 5, 115, 0, 0, 271, 20, 1, 0, 0, 0, 272, 273, 5, 109, 0, 0, 273, 274, 5, 97, 0, 0, 274, 275, 5, 120, 0, 0, 275, 276, 5, 95, 0, 0, 276, 277, 5, 100, 0, 0, 277, 278, 5, 105, 0, 0, 278, 279, 5, 115, 0, 0, 279, 280, 5, 112, 0, 0, 280, 281, 5, 97, 0, 0, 281, 282, 5, 116, 0, 0, 282, 283, 5, 99, 0, 0, 283, 284, 5, 104, 0, 0, 284, 285, 5, 95, 0, 0, 285, 286, 5, 103, 0, 0, 286, 287, 5, 114, 0, 0, 287, 288, 5, 105, 0, 0, 288, 289, 5, 100, 0, 0, 289, 22, 1, 0, 0, 0, 290, 291, 5, 105, 0, 0, 291, 292, 5, 110, 0, 0, 292, 293, 5, 112, 0, 0, 293, 294, 5, 117, 0, 0, 294, 295, 5, 116, 0, 0, 295, 24, 1, 0, 0, 0, 296, 297, 5, 99, 0, 0, 297, 298, 5, 111, 0, 0, 298, 299, 5, 109, 0, 0, 299, 300, 5, 112, 0, 0, 300, 301, 5, 117, 0, 0, 301, 302, 5, 116, 0, 0, 302, 303, 5, 101, 0, 0, 303, 26, 1, 0, 0, 0, 304, 305, 5, 118, 0, 0, 305, 306, 5, 101, 0, 0, 306, 307, 5, 114, 0, 0, 307, 308, 5, 116, 0, 0, 308, 309, 5, 101, 0, 0, 309, 310, 5, 120, 0, 0, 310, 28, 1, 0, 0, 0, 311, 312, 5, 112, 0, 0, 312, 313, 5, 105, 0, 0, 313, 314, 5, 120, 0, 0, 314, 315, 5, 101, 0, 0, 315, 316, 5, 108, 0, 0, 316, 30, 1, 0, 0, 0, 317, 318, 5, 100, 0, 0, 318, 319, 5, 111, 0, 0, 319, 320, 5, 109, 0, 0, 320, 321, 5, 97, 0, 0, 321, 322, 5, 105, 0, 0, 322, 323, 5, 110, 0, 0, 323, 32, 1, 0, 0, 0, 324, 325, 5, 104, 0, 0, 325, 326, 5, 117, 0, 0, 326, 327, 5, 108, 0, 0, 327, 328, 5, 108, 0, 0, 328, 34, 1, 0, 0, 0, 329, 330, 5, 103, 0, 0, 330, 331, 5, 101, 0, 0, 331, 332, 5, 111, 0, 0, 332, 333, 5, 109, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 116, 0, 0, 335, 336, 5, 114, 0, 0, 336, 337, 5, 121, 0, 0, 337, 36, 1, 0, 0, 0, 338, 339, 5, 109, 0, 0, 339, 340, 5, 105, 0, 0, 340, 341, 5, 115, 0, 0, 341, 342, 5, 115, 0, 0, 342, 38, 1, 0, 0, 0, 343, 344, 5, 99, 0, 0, 344, 345, 5, 108, 0, 0, 345, 346, 5, 111, 0, 0, 346, 347, 5, 115, 0, 0, 347, 348, 5, 101, 0, 0, 348, 349, 5, 115, 0, 0, 349, 350, 5, 116, 0, 0, 350, 351, 5, 95, 0, 0, 351, 352, 5, 104, 0, 0, 352, 353, 5, 105, 0, 0, 353, 354, 5, 116, 0, 0, 354, 40, 1, 0, 0, 0, 355, 356, 5, 97, 0, 0, 356, 357, 5, 110, 0, 0, 357, 358, 5, 121, 0, 0, 358, 359, 5, 95, 0, 0, 359, 360, 5, 104, 0, 0, 360, 361, 5, 105, 0, 0, 361, 362, 5, 116, 0, 0, 362, 42, 1, 0, 0, 0, 363, 364, 5, 114, 0, 0, 364, 365, 5, 97, 0, 0, 365, 366, 5, 121, 0, 0, 366, 367, 5, 103, 0, 0, 367, 368, 5, 101, 0, 0, 368, 369, 5, 110, 0, 0, 369, 44, 1, 0, 0, 0, 370, 371, 5, 97, 0, 0, 371, 372, 5, 109, 0, 0, 372, 373, 5, 112, 0, 0, 373, 374, 5, 108, 0, 0, 374, 375, 5, 105, 0, 0, 375, 376, 5, 102, 0, 0, 376, 377, 5, 105, 0, 0, 377, 378, 5, 99, 0, 0, 378, 379, 5, 97, 0, 0, 379, 380, 5, 116, 0, 0, 380, 381, 5, 105, 0, 0, 381, 382, 5, 111, 0, 0, 382, 383, 5, 110, 0, 0, 383, 46, 1, 0, 0, 0, 384, 385, 5, 109, 0, 0, 385, 386, 5, 101, 0, 0, 386, 387, 5, 115, 0, 0, 387, 388, 5, 104, 0, 0, 388, 48, 1, 0, 0, 0, 389, 390, 5, 115, 0, 0, 390, 391, 5, 104, 0, 0, 391, 392, 5, 97, 0, 0, 392, 393, 5, 100, 0, 0, 393, 394, 5, 101, 0, 0, 394, 395, 5, 114, 0, 0, 395, 50, 1, 0, 0, 0, 396, 397, 5, 100, 0, 0, 397, 398, 5, 115, 0, 0, 398, 52, 1, 0, 0, 0, 399, 400, 5, 99, 0, 0, 400, 401, 5, 117, 0, 0, 401, 402, 5, 108, 0, 0, 402, 403, 5, 108, 0, 0, 403, 54, 1, 0, 0, 0, 404, 405, 5, 100, 0, 0, 405, 406, 5, 101, 0, 0, 406, 407, 5, 112, 0, 0, 407, 408, 5, 116, 0, 0, 408, 409, 5, 104, 0, 0, 409, 410, 5, 95, 0, 0, 410, 411, 5, 102, 0, 0, 411, 412, 5, 117, 0, 0, 412, 413, 5, 110, 0, 0, 413, 414, 5, 99, 0, 0, 414, 56, 1, 0, 0, 0, 415, 416, 5, 100, 0, 0, 416, 417, 5, 101, 0, 0, 417, 418, 5, 112, 0, 0, 418, 419, 5, 116, 0, 0, 419, 420, 5, 104, 0, 0, 420, 421, 5, 95, 0, 0, 421, 422, 5, 119, 0, 0, 422, 423, 5, 114, 0, 0, 423, 424, 5, 105, 0, 0, 424, 425, 5, 116, 0, 0, 425, 426, 5, 101, 0, 0, 426, 58, 1, 0, 0, 0, 427, 428, 5, 99, 0, 0, 428, 429, 5, 111, 0, 0, 429, 430, 5, 110, 0, 0, 430, 431, 5, 115, 0, 0, 431, 432, 5, 101, 0, 0, 432, 433, 5, 114, 0, 0, 433, 434, 5, 118, 0, 0, 434, 435, 5, 97, 0, 0, 435, 436, 5, 116, 0, 0, 436, 437, 5, 105, 0, 0, 437, 438, 5, 118, 0, 0, 438, 439, 5, 101, 0, 0, 439, 60, 1, 0, 0, 0, 440, 441, 5, 100, 0, 0, 441, 442, 5, 101, 0, 0, 442, 443, 5, 112, 0, 0, 443, 444, 5, 116, 0, 0, 444, 445, 5, 104, 0, 0, 445, 446, 5, 95, 0, 0, 446, 447, 5, 98, 0, 0, 447, 448, 5, 105, 0, 0, 448, 449, 5, 97, 0, 0, 449, 450, 5, 115, 0, 0, 450, 62, 1, 0, 0, 0, 451, 452, 5, 100, 0, 0, 452, 453, 5, 101, 0, 0, 453, 454, 5, 112, 0, 0, 454, 455, 5, 116, 0, 0, 455, 456, 5, 104, 0, 0, 456, 457, 5, 95, 0, 0, 457, 458, 5, 98, 0, 0, 458, 459, 5, 105, 0, 0, 459, 460, 5, 97, 0, 0, 460, 461, 5, 115, 0, 0, 461, 462, 5, 95, 0, 0, 462, 463, 5, 99, 0, 0, 463, 464, 5, 108, 0, 0, 464, 465, 5, 97, 0, 0, 465, 466, 5, 109, 0, 0, 466, 467, 5, 112, 0, 0, 467, 64, 1, 0, 0, 0, 468, 469, 5, 115, 0, 0, 469, 470, 5, 108, 0, 0, 470, 471, 5, 111, 0, 0, 471, 472, 5, 112, 0, 0, 472, 473, 5, 101, 0, 0, 473, 474, 5, 95, 0, 0, 474, 475, 5, 115, 0, 0, 475, 476, 5, 99, 0, 0, 476, 477, 5, 97, 0, 0, 477, 478, 5, 108, 0, 0, 478, 479, 5, 101, 0, 0, 479, 480, 5, 100, 0, 0, 480, 481, 5, 95, 0, 0, 481, 482, 5, 100, 0, 0, 482, 483, 5, 101, 0, 0, 483, 484, 5, 112, 0, 0, 484, 485, 5, 116, 0, 0, 485, 486, 5, 104, 0, 0, 486, 487, 5, 95, 0, 0, 487, 488, 5, 98, 0, 0, 488, 489, 5, 105, 0, 0, 489, 490, 5, 97, 0, 0, 490, 491, 5, 115, 0, 0, 491, 66, 1, 0, 0, 0, 492, 493, 5, 101, 0, 0, 493, 494, 5, 110, 0, 0, 494, 495, 5, 97, 0, 0, 495, 496, 5, 98, 0, 0, 496, 497, 5, 108, 0, 0, 497, 498, 5, 101, 0, 0, 498, 499, 5, 95, 0, 0, 499, 500, 5, 100, 0, 0, 500, 501, 5, 101, 0, 0, 501, 502, 5, 112, 0, 0, 502, 503, 5, 116, 0, 0, 503, 504, 5, 104, 0, 0, 504, 68, 1, 0, 0, 0, 505, 506, 5, 116, 0, 0, 506, 507, 5, 111, 0, 0, 507, 508, 5, 112, 0, 0, 508, 509, 5, 111, 0, 0, 509, 510, 5, 108, 0, 0, 510, 511, 5, 111, 0, 0, 511, 512, 5, 103, 0, 0, 512, 513, 5, 121, 0, 0, 513, 70, 1, 0, 0, 0, 514, 515, 5, 101, 0, 0, 515, 516, 5, 110, 0, 0, 516, 517, 5, 97, 0, 0, 517, 518, 5, 98, 0, 0, 518, 519, 5, 108, 0, 0, 519, 520, 5, 101, 0, 0, 520, 521, 5, 95, 0, 0, 521, 522, 5, 115, 0, 0, 522, 523, 5, 116, 0, 0, 523, 524, 5, 101, 0, 0, 524, 525, 5, 110, 0, 0, 525, 526, 5, 99, 0, 0, 526, 527, 5, 105, 0, 0, 527, 528, 5, 108, 0, 0, 528, 72, 1, 0, 0, 0, 529, 530, 5, 115, 0, 0, 530, 531, 5, 116, 0, 0, 531, 532, 5, 101, 0, 0, 532, 533, 5, 110, 0, 0, 533, 534, 5, 99, 0, 0, 534, 535, 5, 105, 0, 0, 535, 536, 5, 108, 0, 0, 536, 537, 5, 95, 0, 0, 537, 538, 5, 102, 0, 0, 538, 539, 5, 117, 0, 0, 539, 540, 5, 110, 0, 0, 540, 541, 5, 99, 0, 0, 541, 74, 1, 0, 0, 0, 542, 543, 5, 115, 0, 0, 543, 544, 5, 116, 0, 0, 544, 545, 5, 101, 0, 0, 545, 546, 5, 110, 0, 0, 546, 547, 5, 99, 0, 0, 547, 548, 5, 105, 0, 0, 548, 549, 5, 108, 0, 0, 549, 550, 5, 95, 0, 0, 550, 551, 5, 112, 0, 0, 551, 552, 5, 97, 0, 0, 552, 553, 5, 115, 0, 0, 553, 554, 5, 115, 0, 0, 554, 555, 5, 95, 0, 0, 555, 556, 5, 111, 0, 0, 556, 557, 5, 112, 0, 0, 557, 76, 1, 0, 0, 0, 558, 559, 5, 115, 0, 0, 559, 560, 5, 116, 0, 0, 560, 561, 5, 101, 0, 0, 561, 562, 5, 110, 0, 0, 562, 563, 5, 99, 0, 0, 563, 564, 5, 105, 0, 0, 564, 565, 5, 108, 0, 0, 565, 566, 5, 95, 0, 0, 566, 567, 5, 114, 0, 0, 567, 568, 5, 101, 0, 0, 568, 569, 5, 97, 0, 0, 569, 570, 5, 100, 0, 0, 570, 571, 5, 95, 0, 0, 571, 572, 5, 109, 0, 0, 572, 573, 5, 97, 0, 0, 573, 574, 5, 115, 0, 0, 574, 575, 5, 107, 0, 0, 575, 78, 1, 0, 0, 0, 576, 577, 5, 115, 0, 0, 577, 578, 5, 116, 0, 0, 578, 579, 5, 101, 0, 0, 579, 580, 5, 110, 0, 0, 580, 581, 5, 99, 0, 0, 581, 582, 5, 105, 0, 0, 582, 583, 5, 108, 0, 0, 583, 584, 5, 95, 0, 0, 584, 585, 5, 119, 0, 0, 585, 586, 5, 114, 0, 0, 586, 587, 5, 105, 0, 0, 587, 588, 5, 116, 0, 0, 588, 589, 5, 101, 0, 0, 589, 590, 5, 95, 0, 0, 590, 591, 5, 109, 0, 0, 591, 592, 5, 97, 0, 0, 592, 593, 5, 115, 0, 0, 593, 594, 5, 107, 0, 0, 594, 80, 1, 0, 0, 0, 595, 596, 5, 114, 0, 0, 596, 597, 5, 101, 0, 0, 597, 598, 5, 99, 0, 0, 598, 599, 5, 117, 0, 0, 599, 600, 5, 114, 0, 0, 600, 601, 5, 115, 0, 0, 601, 602, 5, 105, 0, 0, 602, 603, 5, 111, 0, 0, 603, 604, 5, 110, 0, 0, 604, 605, 5, 95, 0, 0, 605, 606, 5, 100, 0, 0, 606, 607, 5, 101, 0, 0, 607, 608, 5, 112, 0, 0, 608, 609, 5, 116, 0, 0, 609, 610, 5, 104, 0, 0, 610, 82, 1, 0, 0, 0, 611, 612, 5, 112, 0, 0, 612, 613, 5, 97, 0, 0, 613, 614, 5, 121, 0, 0, 614, 615, 5, 108, 0, 0, 615, 616, 5, 111, 0, 0, 616, 617, 5, 97, 0, 0, 617, 618, 5, 100, 0, 0, 618, 84, 1, 0, 0, 0, 619, 620, 5, 112, 0, 0, 620, 621, 5, 101, 0, 0, 621, 622, 5, 114, 0, 0, 622, 623, 5, 95, 0, 0, 623, 624, 5, 109, 0, 0, 624, 625, 5, 97, 0, 0, 625, 626, 5, 116, 0, 0, 626, 627, 5, 101, 0, 0, 627, 628, 5, 114, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630, 5, 97, 0, 0, 630, 631, 5, 108, 0, 0, 631, 86, 1, 0, 0, 0, 632, 633, 5, 108, 0, 0, 633, 634, 5, 111, 0, 0, 634, 635, 5, 99, 0, 0, 635, 636, 5, 97, 0, 0, 636, 637, 5, 108, 0, 0, 637, 88, 1, 0, 0, 0, 638, 639, 5, 124, 0, 0, 639, 640, 5, 124, 0, 0, 640, 90, 1, 0, 0, 0, 641, 642, 5, 38, 0, 0, 642, 643, 5, 38, 0, 0, 643, 92, 1, 0, 0, 0, 644, 645, 5, 124, 0, 0, 645, 94, 1, 0, 0, 0, 646, 647, 5, 61, 0, 0, 647, 648, 5, 61, 0, 0, 648, 96, 1, 0, 0, 0, 649, 650, 5, 33, 0, 0, 650, 651, 5, 61, 0, 0, 651, 98, 1, 0, 0, 0, 652, 653, 5, 62, 0, 0, 653, 100, 1, 0, 0, 0, 654, 655, 5, 60, 0, 0, 655, 102, 1, 0, 0, 0, 656, 657, 5, 62, 0, 0, 657, 658, 5, 61, 0, 0, 658, 104, 1, 0, 0, 0, 659, 660, 5, 60, 0, 0, 660, 661, 5, 61, 0, 0, 661, 106, 1, 0, 0, 0, 662, 663, 5, 43, 0, 0, 663, 108, 1, 0, 0, 0, 664, 665, 5, 45, 0, 0, 665, 110, 1, 0, 0, 0, 666, 667, 5, 47, 0, 0, 667, 112, 1, 0, 0, 0, 668, 669, 5, 37, 0, 0, 669, 114, 1, 0, 0, 0, 670, 671, 5, 94, 0, 0, 671, 116, 1, 0, 0, 0, 672, 673, 5, 33, 0, 0, 673, 118, 1, 0, 0, 0, 674, 675, 5, 59, 0, 0, 675, 120, 1, 0, 0, 0, 676, 677, 5, 58, 0, 0, 677, 122, 1, 0, 0, 0, 678, 679, 5, 46, 0, 0, 679, 124, 1, 0, 0, 0, 680, 681, 5, 61, 0, 0, 681, 126, 1, 0, 0, 0, 682, 683, 5, 40, 0, 0, 683, 128, 1, 0, 0, 0, 684, 685, 5, 41, 0, 0, 685, 130, 1, 0, 0, 0, 686, 687, 5, 123, 0, 0, 687, 132, 1, 0, 0, 0, 688, 689, 5, 125, 0, 0, 689, 134, 1, 0, 0, 0, 690, 691, 5, 91, 0, 0, 691, 136, 1, 0, 0, 0, 692, 693, 5, 93, 0, 0, 693, 138, 1, 0, 0, 0, 694, 695, 5, 116, 0, 0, 695, 696, 5, 114, 0, 0, 696, 697, 5, 117, 0, 0, 697, 698, 5, 101, 0, 0, 698, 140, 1, 0, 0, 0, 699, 700, 5, 102, 0, 0, 700, 701, 5, 97, 0, 0, 701, 702, 5, 108, 0, 0, 702, 703, 5, 115, 0, 0, 703, 704, 5, 101, 0, 0, 704, 142, 1, 0, 0, 0, 705, 706, 5, 108, 0, 0, 706, 707, 5, 111, 0, 0, 707, 708, 5, 103, 0, 0, 708, 144, 1, 0, 0, 0, 709, 710, 5, 108, 0, 0, 710, 711, 5, 97, 0, 0, 711, 712, 5, 121, 0, 0, 712, 713, 5, 111, 0, 0, 713, 714, 5, 117, 0, 0, 714, 715, 5, 116, 0, 0, 715, 146, 1, 0, 0, 0, 716, 717, 5, 115, 0, 0, 717, 718, 5, 116, 0, 0, 718, 719, 5, 114, 0, 0, 719, 720, 5, 117, 0, 0, 720, 721, 5, 99, 0, 0, 721, 722, 5, 116, 0, 0, 722, 148, 1, 0, 0, 0, 723, 724, 5, 67, 0, 0, 724, 725, 5, 111, 0, 0, 725, 726, 5, 109, 0, 0, 726, 727, 5, 112, 0, 0, 727, 728, 5, 117, 0, 0, 728, 729, 5, 116, 0, 0, 729, 730, 5, 101, 0, 0, 730, 731, 5, 80, 0, 0, 731, 732, 5, 83, 0, 0, 732, 733, 5, 79, 0, 0, 733, 150, 1, 0, 0, 0, 734, 735, 5, 71, 0, 0, 735, 736, 5, 114, 0, 0, 736, 737, 5, 97, 0, 0, 737, 738, 5, 112, 0, 0, 738, 739, 5, 104, 0, 0, 739, 740, 5, 105, 0, 0, 740, 741, 5, 99, 0, 0, 741, 742, 5, 115, 0, 0, 742, 743, 5, 80, 0, 0, 743, 744, 5, 83, 0, 0, 744, 745, 5, 79, 0, 0, 745, 152, 1, 0, 0, 0, 746, 747, 5, 82, 0, 0, 747, 748, 5, 97, 0, 0, 748, 749, 5, 121, 0, 0, 749, 750, 5, 116, 0, 0, 750, 751, 5, 114, 0, 0, 751, 752, 5, 97, 0, 0, 752, 753, 5, 99, 0, 0, 753, 754, 5, 101, 0, 0, 754, 755, 5, 80, 0, 0, 755, 756, 5, 83, 0, 0, 756, 757, 5, 79, 0, 0, 757, 154, 1, 0, 0, 0, 758, 759, 5, 87, 0, 0, 759, 760, 5, 111, 0, 0, 760, 761, 5, 114, 0, 0, 761, 762, 5, 107, 0, 0, 762, 763, 5, 103, 0, 0, 763, 764, 5, 114, 0, 0, 764, 765, 5, 97, 0, 0, 765, 766, 5, 112, 0, 0, 766, 767, 5, 104, 0, 0, 767, 768, 5, 80, 0, 0, 768, 769, 5, 83, 0, 0, 769, 770, 5, 79, 0, 0, 770, 156, 1, 0, 0, 0, 771, 772, 5, 78, 0, 0, 772, 773, 5, 111, 0, 0, 773, 774, 5, 100, 0, 0, 774, 775, 5, 101, 0, 0, 775, 158, 1, 0, 0, 0, 776, 777, 5, 78, 0, 0, 777, 778, 5, 111, 0, 0, 778, 779, 5, 100, 0, 0, 779, 780, 5, 101, 0, 0, 780, 781, 5, 79, 0, 0, 781, 782, 5, 117, 0, 0, 782, 783, 5, 116, 0, 0, 783, 784, 5, 112, 0, 0, 784, 785, 5, 117, 0, 0, 785, 786, 5, 116, 0, 0, 786, 160, 1, 0, 0, 0, 787, 788, 5, 82, 0, 0, 788, 789, 5, 97, 0, 0, 789, 790, 5, 121, 0, 0, 790, 791, 5, 116, 0, 0, 791, 792, 5, 114, 0, 0, 792, 793, 5, 97, 0, 0, 793, 794, 5, 99, 0, 0, 794, 795, 5, 101, 0, 0, 795, 796, 5, 82, 0, 0, 796, 797, 5, 97, 0, 0, 797, 798, 5, 121, 0, 0, 798, 799, 5, 103, 0, 0, 799, 800, 5, 101, 0, 0, 800, 801, 5, 110, 0, 0, 801, 162, 1, 0, 0, 0, 802, 803, 5, 82, 0, 0, 803, 804, 5, 97, 0, 0, 804, 805, 5, 121, 0, 0, 805, 806, 5, 116, 0, 0, 806, 807, 5, 114, 0, 0, 807, 808, 5, 97, 0, 0, 808, 809, 5, 99, 0, 0, 809, 810, 5, 101, 0, 0, 810, 811, 5, 80, 0, 0, 811, 812, 5, 97, 0, 0, 812, 813, 5, 115, 0, 0, 813, 814, 5, 115, 0, 0, 814, 164, 1, 0, 0, 0, 815, 816, 5, 80, 0, 0, 816, 817, 5, 97, 0, 0, 817, 818, 5, 115, 0, 0, 818, 819, 5, 115, 0, 0, 819, 820, 5, 78, 0, 0, 820, 821, 5, 111, 0, 0, 821, 822, 5, 100, 0, 0, 822, 823, 5, 101, 0, 0, 823, 166, 1, 0, 0, 0, 824, 825, 5, 80, 0, 0, 825, 826, 5, 97, 0, 0, 826, 827, 5, 115, 0, 0, 827, 828, 5, 115, 0, 0, 828, 829, 5, 86, 0, 0, 829, 830, 5, 105, 0, 0, 830, 831, 5, 101, 0, 0, 831, 832, 5, 119, 0, 0, 832, 168, 1, 0, 0, 0, 833, 834, 5, 80, 0, 0, 834, 835, 5, 105, 0, 0, 835, 836, 5, 112, 0, 0, 836, 837, 5, 101, 0, 0, 837, 838, 5, 108, 0, 0, 838, 839, 5, 105, 0, 0, 839, 840, 5, 110, 0, 0, 840, 841, 5, 101, 0, 0, 841, 170, 1, 0, 0, 0, 842, 843, 5, 115, 0, 0, 843, 844, 5, 108, 0, 0, 844, 845, 5, 111, 0, 0, 845, 846, 5, 116, 0, 0, 846, 172, 1, 0, 0, 0, 847, 848, 5, 114, 0, 0, 848, 849, 5, 116, 0, 0, 849, 174, 1, 0, 0, 0, 850, 851, 5, 82, 0, 0, 851, 852, 5, 84, 0, 0, 852, 853, 5, 86, 0, 0, 853, 176, 1, 0, 0, 0, 854, 855, 5, 68, 0, 0, 855, 856, 5, 83, 0, 0, 856, 857, 5, 86, 0, 0, 857, 178, 1, 0, 0, 0, 858, 859, 5, 114, 0, 0, 859, 860, 5, 111, 0, 0, 860, 861, 5, 111, 0, 0, 861, 862, 5, 116, 0, 0, 862, 180, 1, 0, 0, 0, 863, 864, 5, 101, 0, 0, 864, 865, 5, 110, 0, 0, 865, 866, 5, 117, 0, 0, 866, 867, 5, 109, 0, 0, 867, 182, 1, 0, 0, 0, 868, 872, 7, 0, 0, 0, 869, 871, 7, 1, 0, 0, 870, 869, 1, 0, 0, 0, 871, 874, 1, 0, 0, 0, 872, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 184, 1, 0, 0, 0, 874, 872, 1, 0, 0, 0, 875, 877, 7, 2, 0, 0, 876, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 186, 1, 0, 0, 0, 880, 882, 7, 2, 0, 0, 881, 880, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 889, 5, 46, 0, 0, 886, 888, 7, 2, 0, 0, 887, 886, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 899, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 892, 894, 5, 46, 0, 0, 893, 895, 7, 2, 0, 0, 894, 893, 1, 0, 0, 0, 895, 896, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 899, 1, 0, 0, 0, 898, 881, 1, 0, 0, 0, 898, 892, 1, 0, 0, 0, 899, 188, 1, 0, 0, 0, 900, 906, 5, 34, 0, 0, 901, 905, 8, 3, 0, 0, 902, 903, 5, 34, 0, 0, 903, 905, 5, 34, 0, 0, 904, 901, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 905, 908, 1, 0, 0, 0, 906, 904, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 909, 1, 0, 0, 0, 908, 906, 1, 0, 0, 0, 909, 910, 5, 34, 0, 0, 910, 190, 1, 0, 0, 0, 911, 915, 5, 96, 0, 0, 912, 914, 8, 4, 0, 0, 913, 912, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 918, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 919, 5, 96, 0, 0, 919, 192, 1, 0, 0, 0, 920, 924, 5, 35, 0, 0, 921, 923, 8, 5, 0, 0, 922, 921, 1, 0, 0, 0, 923, 926, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 927, 1, 0, 0, 0, 926, 924, 1, 0, 0, 0, 927, 928, 6, 96, 0, 0, 928, 194, 1, 0, 0, 0, 929, 930, 7, 6, 0, 0, 930, 931, 1, 0, 0, 0, 931, 932, 6, 97, 0, 0, 932, 196, 1, 0, 0, 0, 933, 934, 5, 42, 0, 0, 934, 198, 1, 0, 0, 0, 935, 936, 5, 123, 0, 0, 936, 937, 4, 99, 0, 0, 937, 938, 3, 203, 101, 0, 938, 200, 1, 0, 0, 0, 939, 940, 5, 123, 0, 0, 940, 941, 3, 203, 101, 0, 941, 202, 1, 0, 0, 0, 942, 976, 3, 201, 100, 0, 943, 944, 5, 47, 0, 0, 944, 945, 5, 47, 0, 0, 945, 949, 1, 0, 0, 0, 946, 948, 8, 5, 0, 0, 947, 946, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 976, 1, 0, 0, 0, 951, 949, 1, 0, 0, 0, 952, 953, 5, 47, 0, 0, 953, 954, 5, 42, 0, 0, 954, 958, 1, 0, 0, 0, 955, 957, 9, 0, 0, 0, 956, 955, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 959, 961, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 961, 962, 5, 42, 0, 0, 962, 976, 5, 47, 0, 0, 963, 969, 5, 34, 0, 0, 964, 968, 8, 7, 0, 0, 965, 966, 5, 92, 0, 0, 966, 968, 9, 0, 0, 0, 967, 964, 1, 0, 0, 0, 967, 965, 1, 0, 0, 0, 968, 971, 1, 0, 0, 0, 969, 967, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 972, 1, 0, 0, 0, 971, 969, 1, 0, 0, 0, 972, 976, 5, 34, 0, 0, 973, 976, 8, 8, 0, 0, 974, 976, 5, 47, 0, 0, 975, 942, 1, 0, 0, 0, 975, 943, 1, 0, 0, 0, 975, 952, 1, 0, 0, 0, 975, 963, 1, 0, 0, 0, 975, 973, 1, 0, 0, 0, 975, 974, 1, 0, 0, 0, 976, 979, 1, 0, 0, 0, 977, 975, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 980, 1, 0, 0, 0, 979, 977, 1, 0, 0, 0, 980, 981, 5, 125, 0, 0, 981, 204, 1, 0, 0, 0, 982, 983, 5, 37, 0, 0, 983, 984, 5, 123, 0, 0, 984, 206, 1, 0, 0, 0, 985, 986, 5, 125, 0, 0, 986, 987, 5, 37, 0, 0, 987, 208, 1, 0, 0, 0, 988, 992, 3, 205, 102, 0, 989, 991, 9, 0, 0, 0, 990, 989, 1, 0, 0, 0, 991, 994, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 993, 995, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 995, 996, 3, 207, 103, 0, 996, 210, 1, 0, 0, 0, 18, 0, 872, 878, 883, 889, 896, 898, 904, 906, 915, 924, 949, 958, 967, 969, 975, 977, 992, 1, 6, 0, 0] \ No newline at end of file diff --git a/sources/SIGParser/.antlr/SIGLexer.tokens b/sources/SIGParser/.antlr/SIGLexer.tokens index 82b9de218..31b62ad92 100644 --- a/sources/SIGParser/.antlr/SIGLexer.tokens +++ b/sources/SIGParser/.antlr/SIGLexer.tokens @@ -42,23 +42,23 @@ T__40=41 T__41=42 T__42=43 T__43=44 -T__44=45 -OR=46 -AND=47 -PIPE=48 -EQ=49 -NEQ=50 -GT=51 -LT=52 -GTEQ=53 -LTEQ=54 -PLUS=55 -MINUS=56 -DIV=57 -MOD=58 -POW=59 -NOT=60 -SCOL=61 +OR=45 +AND=46 +PIPE=47 +EQ=48 +NEQ=49 +GT=50 +LT=51 +GTEQ=52 +LTEQ=53 +PLUS=54 +MINUS=55 +DIV=56 +MOD=57 +POW=58 +NOT=59 +SCOL=60 +COLON=61 DOT=62 ASSIGN=63 OPAR=64 @@ -97,9 +97,10 @@ RAWEXPR=96 COMMENT=97 SPACE=98 POINTER=99 -INSERT_START=100 -INSERT_END=101 -INSERT_BLOCK=102 +FUNC_BODY=100 +INSERT_START=101 +INSERT_END=102 +INSERT_BLOCK=103 'const'=1 '::'=2 ','=3 @@ -107,60 +108,60 @@ INSERT_BLOCK=102 'define'=5 'rtv'=6 'blend'=7 -':'=8 -'launch'=9 -'entry'=10 -'num_threads'=11 -'max_dispatch_grid'=12 -'input'=13 -'compute'=14 -'vertex'=15 -'pixel'=16 -'domain'=17 -'hull'=18 -'geometry'=19 -'miss'=20 -'closest_hit'=21 -'any_hit'=22 -'raygen'=23 -'amplification'=24 -'mesh'=25 -'shader'=26 -'ds'=27 -'cull'=28 -'depth_func'=29 -'depth_write'=30 -'conservative'=31 -'depth_bias'=32 -'depth_bias_clamp'=33 -'slope_scaled_depth_bias'=34 -'enable_depth'=35 -'topology'=36 -'enable_stencil'=37 -'stencil_func'=38 -'stencil_pass_op'=39 -'stencil_read_mask'=40 -'stencil_write_mask'=41 -'recursion_depth'=42 -'payload'=43 -'per_material'=44 -'local'=45 -'||'=46 -'&&'=47 -'|'=48 -'=='=49 -'!='=50 -'>'=51 -'<'=52 -'>='=53 -'<='=54 -'+'=55 -'-'=56 -'/'=57 -'%'=58 -'^'=59 -'!'=60 -';'=61 +'launch'=8 +'entry'=9 +'num_threads'=10 +'max_dispatch_grid'=11 +'input'=12 +'compute'=13 +'vertex'=14 +'pixel'=15 +'domain'=16 +'hull'=17 +'geometry'=18 +'miss'=19 +'closest_hit'=20 +'any_hit'=21 +'raygen'=22 +'amplification'=23 +'mesh'=24 +'shader'=25 +'ds'=26 +'cull'=27 +'depth_func'=28 +'depth_write'=29 +'conservative'=30 +'depth_bias'=31 +'depth_bias_clamp'=32 +'slope_scaled_depth_bias'=33 +'enable_depth'=34 +'topology'=35 +'enable_stencil'=36 +'stencil_func'=37 +'stencil_pass_op'=38 +'stencil_read_mask'=39 +'stencil_write_mask'=40 +'recursion_depth'=41 +'payload'=42 +'per_material'=43 +'local'=44 +'||'=45 +'&&'=46 +'|'=47 +'=='=48 +'!='=49 +'>'=50 +'<'=51 +'>='=52 +'<='=53 +'+'=54 +'-'=55 +'/'=56 +'%'=57 +'^'=58 +'!'=59 +';'=60 +':'=61 '.'=62 '='=63 '('=64 @@ -192,5 +193,5 @@ INSERT_BLOCK=102 'root'=90 'enum'=91 '*'=99 -'%{'=100 -'}%'=101 +'%{'=101 +'}%'=102 diff --git a/sources/SIGParser/.antlr/SIGListener.h b/sources/SIGParser/.antlr/SIGListener.h index e79f8ecb5..35fdeac08 100644 --- a/sources/SIGParser/.antlr/SIGListener.h +++ b/sources/SIGParser/.antlr/SIGListener.h @@ -137,6 +137,15 @@ class SIGListener : public antlr4::tree::ParseTreeListener { virtual void enterTable_stat(SIGParser::Table_statContext *ctx) = 0; virtual void exitTable_stat(SIGParser::Table_statContext *ctx) = 0; + virtual void enterFunction_definition(SIGParser::Function_definitionContext *ctx) = 0; + virtual void exitFunction_definition(SIGParser::Function_definitionContext *ctx) = 0; + + virtual void enterFunction_params(SIGParser::Function_paramsContext *ctx) = 0; + virtual void exitFunction_params(SIGParser::Function_paramsContext *ctx) = 0; + + virtual void enterFunction_semantic(SIGParser::Function_semanticContext *ctx) = 0; + virtual void exitFunction_semantic(SIGParser::Function_semanticContext *ctx) = 0; + virtual void enterTable_block(SIGParser::Table_blockContext *ctx) = 0; virtual void exitTable_block(SIGParser::Table_blockContext *ctx) = 0; diff --git a/sources/SIGParser/.antlr/SIGParser.cpp b/sources/SIGParser/.antlr/SIGParser.cpp index 5b2d9a687..d587bfc4b 100644 --- a/sources/SIGParser/.antlr/SIGParser.cpp +++ b/sources/SIGParser/.antlr/SIGParser.cpp @@ -53,8 +53,9 @@ void sigParserInitialize() { "option_id", "owner_id", "template_id", "function_id", "value_id", "value_id_ignore", "type_id", "insert_block", "shader_path", "inherit", "layout_stat", "layout_block", "layout_definition", "table_stat", - "table_block", "table_definition", "rt_color_declaration", "rt_ds_declaration", - "rt_stat", "rt_block", "rt_definition", "array_value_holder", "array_value_ids", + "function_definition", "function_params", "function_semantic", "table_block", + "table_definition", "rt_color_declaration", "rt_ds_declaration", "rt_stat", + "rt_block", "rt_definition", "array_value_holder", "array_value_ids", "root_sig", "shader", "compute_pso_stat", "compute_pso_block", "compute_pso_definition", "graphics_pso_stat", "graphics_pso_block", "graphics_pso_definition", "rtx_pso_stat", "rtx_pso_block", "rtx_pso_definition", "node_param_id", @@ -69,38 +70,38 @@ void sigParserInitialize() { }, std::vector{ "", "'const'", "'::'", "','", "'Sampler'", "'define'", "'rtv'", "'blend'", - "':'", "'launch'", "'entry'", "'num_threads'", "'max_dispatch_grid'", - "'input'", "'compute'", "'vertex'", "'pixel'", "'domain'", "'hull'", - "'geometry'", "'miss'", "'closest_hit'", "'any_hit'", "'raygen'", - "'amplification'", "'mesh'", "'shader'", "'ds'", "'cull'", "'depth_func'", - "'depth_write'", "'conservative'", "'depth_bias'", "'depth_bias_clamp'", - "'slope_scaled_depth_bias'", "'enable_depth'", "'topology'", "'enable_stencil'", - "'stencil_func'", "'stencil_pass_op'", "'stencil_read_mask'", "'stencil_write_mask'", + "'launch'", "'entry'", "'num_threads'", "'max_dispatch_grid'", "'input'", + "'compute'", "'vertex'", "'pixel'", "'domain'", "'hull'", "'geometry'", + "'miss'", "'closest_hit'", "'any_hit'", "'raygen'", "'amplification'", + "'mesh'", "'shader'", "'ds'", "'cull'", "'depth_func'", "'depth_write'", + "'conservative'", "'depth_bias'", "'depth_bias_clamp'", "'slope_scaled_depth_bias'", + "'enable_depth'", "'topology'", "'enable_stencil'", "'stencil_func'", + "'stencil_pass_op'", "'stencil_read_mask'", "'stencil_write_mask'", "'recursion_depth'", "'payload'", "'per_material'", "'local'", "'||'", "'&&'", "'|'", "'=='", "'!='", "'>'", "'<'", "'>='", "'<='", "'+'", - "'-'", "'/'", "'%'", "'^'", "'!'", "';'", "'.'", "'='", "'('", "')'", - "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'log'", "'layout'", + "'-'", "'/'", "'%'", "'^'", "'!'", "';'", "':'", "'.'", "'='", "'('", + "')'", "'{'", "'}'", "'['", "']'", "'true'", "'false'", "'log'", "'layout'", "'struct'", "'ComputePSO'", "'GraphicsPSO'", "'RaytracePSO'", "'WorkgraphPSO'", "'Node'", "'NodeOutput'", "'RaytraceRaygen'", "'RaytracePass'", "'PassNode'", "'PassView'", "'Pipeline'", "'slot'", "'rt'", "'RTV'", "'DSV'", "'root'", - "'enum'", "", "", "", "", "", "", "", "'*'", "'%{'", "'}%'" + "'enum'", "", "", "", "", "", "", "", "'*'", "", "'%{'", "'}%'" }, std::vector{ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "OR", "AND", "PIPE", - "EQ", "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS", "DIV", "MOD", - "POW", "NOT", "SCOL", "DOT", "ASSIGN", "OPAR", "CPAR", "OBRACE", "CBRACE", - "OSBRACE", "CSBRACE", "TRUE", "FALSE", "LOG", "LAYOUT", "STRUCT", - "COMPUTE_PSO", "GRAPHICS_PSO", "RAYTRACE_PSO", "WORKGRAPH_PSO", "NODE", - "NODE_OUTPUT", "RAYTRACE_RAYGEN", "RAYTRACE_PASS", "PASS", "VIEW", - "PIPELINE", "SLOT", "RT", "RTV", "DSV", "ROOTSIG", "ENUM", "ID", "INT_SCALAR", - "FLOAT_SCALAR", "STRING", "RAWEXPR", "COMMENT", "SPACE", "POINTER", - "INSERT_START", "INSERT_END", "INSERT_BLOCK" + "", "", "", "", "", "", "", "", "", "", "", "OR", "AND", "PIPE", "EQ", + "NEQ", "GT", "LT", "GTEQ", "LTEQ", "PLUS", "MINUS", "DIV", "MOD", + "POW", "NOT", "SCOL", "COLON", "DOT", "ASSIGN", "OPAR", "CPAR", "OBRACE", + "CBRACE", "OSBRACE", "CSBRACE", "TRUE", "FALSE", "LOG", "LAYOUT", + "STRUCT", "COMPUTE_PSO", "GRAPHICS_PSO", "RAYTRACE_PSO", "WORKGRAPH_PSO", + "NODE", "NODE_OUTPUT", "RAYTRACE_RAYGEN", "RAYTRACE_PASS", "PASS", + "VIEW", "PIPELINE", "SLOT", "RT", "RTV", "DSV", "ROOTSIG", "ENUM", + "ID", "INT_SCALAR", "FLOAT_SCALAR", "STRING", "RAWEXPR", "COMMENT", + "SPACE", "POINTER", "FUNC_BODY", "INSERT_START", "INSERT_END", "INSERT_BLOCK" } ); static const int32_t serializedATNSegment[] = { - 4,1,102,817,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 4,1,103,853,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7, 14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7, 21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7, @@ -112,268 +113,281 @@ void sigParserInitialize() { 63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7, 70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7, 77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7, - 84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,1,0,1, - 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,198,8,0,10, - 0,12,0,201,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,3,2,213,8,2,1, - 2,1,2,1,2,4,2,218,8,2,11,2,12,2,219,1,2,1,2,3,2,224,8,2,1,3,4,3,227,8, - 3,11,3,12,3,228,1,4,1,4,1,4,1,4,1,4,3,4,236,8,4,1,5,1,5,1,5,1,5,1,6,1, - 6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,10,1,11,1,11,3,11,257,8, - 11,1,12,1,12,1,12,1,12,5,12,263,8,12,10,12,12,12,266,9,12,1,12,1,12,1, - 13,1,13,1,14,1,14,3,14,274,8,14,1,14,1,14,1,15,5,15,279,8,15,10,15,12, - 15,282,9,15,1,15,1,15,1,15,3,15,287,8,15,1,15,1,15,3,15,291,8,15,1,15, - 1,15,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,5,18,306, - 8,18,10,18,12,18,309,9,18,1,18,1,18,1,18,1,18,3,18,315,8,18,1,18,1,18, - 1,19,5,19,320,8,19,10,19,12,19,323,9,19,1,19,1,19,1,19,1,19,1,19,1,20, - 5,20,331,8,20,10,20,12,20,334,9,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21, - 1,22,5,22,344,8,22,10,22,12,22,347,9,22,1,22,1,22,1,22,1,22,1,22,1,23, - 1,23,1,24,1,24,1,24,5,24,359,8,24,10,24,12,24,362,9,24,1,24,3,24,365, - 8,24,1,24,3,24,368,8,24,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29, - 1,29,1,30,1,30,1,30,3,30,383,8,30,1,30,1,30,5,30,387,8,30,10,30,12,30, - 390,9,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,401,8,31,1, - 32,1,32,1,32,1,32,3,32,407,8,32,1,33,1,33,1,34,1,34,1,35,1,35,1,36,1, - 36,1,36,1,36,5,36,419,8,36,10,36,12,36,422,9,36,1,37,1,37,1,37,3,37,427, - 8,37,1,38,5,38,430,8,38,10,38,12,38,433,9,38,1,39,1,39,1,39,3,39,438, - 8,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,3,40,447,8,40,1,41,5,41,450,8, - 41,10,41,12,41,453,9,41,1,42,5,42,456,8,42,10,42,12,42,459,9,42,1,42, - 1,42,1,42,3,42,464,8,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,44, - 1,44,1,44,1,44,1,45,1,45,1,45,3,45,481,8,45,1,46,5,46,484,8,46,10,46, - 12,46,487,9,46,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,49,1,49,1,49, - 1,49,5,49,501,8,49,10,49,12,49,504,9,49,1,49,1,49,1,50,1,50,1,50,1,50, - 1,50,1,51,5,51,514,8,51,10,51,12,51,517,9,51,1,51,1,51,1,51,1,51,1,51, - 1,52,1,52,1,52,1,52,3,52,528,8,52,1,53,5,53,531,8,53,10,53,12,53,534, - 9,53,1,54,5,54,537,8,54,10,54,12,54,540,9,54,1,54,1,54,1,54,3,54,545, - 8,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,558, - 8,55,1,56,5,56,561,8,56,10,56,12,56,564,9,56,1,57,5,57,567,8,57,10,57, - 12,57,570,9,57,1,57,1,57,1,57,3,57,575,8,57,1,57,1,57,1,57,1,57,1,58, - 1,58,3,58,583,8,58,1,59,5,59,586,8,59,10,59,12,59,589,9,59,1,60,1,60, - 1,60,3,60,594,8,60,1,60,1,60,1,60,1,60,1,61,1,61,1,62,1,62,1,62,1,62, - 1,62,1,63,5,63,608,8,63,10,63,12,63,611,9,63,1,63,1,63,1,63,1,63,1,63, - 1,64,1,64,1,64,3,64,621,8,64,1,65,5,65,624,8,65,10,65,12,65,627,9,65, - 1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,3,67,640,8,67, - 1,68,5,68,643,8,68,10,68,12,68,646,9,68,1,69,5,69,649,8,69,10,69,12,69, - 652,9,69,1,69,1,69,1,69,3,69,657,8,69,1,69,1,69,1,69,1,69,1,70,1,70,1, - 70,3,70,666,8,70,1,71,5,71,669,8,71,10,71,12,71,672,9,71,1,72,5,72,675, - 8,72,10,72,12,72,678,9,72,1,72,1,72,1,72,3,72,683,8,72,1,72,1,72,1,72, - 1,72,1,73,1,73,3,73,691,8,73,1,74,5,74,694,8,74,10,74,12,74,697,9,74, - 1,75,5,75,700,8,75,10,75,12,75,703,9,75,1,75,1,75,1,75,3,75,708,8,75, - 1,75,1,75,1,75,1,75,1,76,5,76,715,8,76,10,76,12,76,718,9,76,1,76,1,76, - 1,76,1,76,1,77,1,77,3,77,726,8,77,1,78,5,78,729,8,78,10,78,12,78,732, - 9,78,1,79,5,79,735,8,79,10,79,12,79,738,9,79,1,79,1,79,1,79,3,79,743, - 8,79,1,79,1,79,1,79,1,79,1,80,5,80,750,8,80,10,80,12,80,753,9,80,1,80, - 1,80,1,80,3,80,758,8,80,1,80,1,80,1,80,1,80,1,81,5,81,765,8,81,10,81, - 12,81,768,9,81,1,81,1,81,1,81,1,81,3,81,774,8,81,1,82,5,82,777,8,82,10, - 82,12,82,780,9,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,3,84,791, - 8,84,1,84,1,84,1,85,1,85,3,85,797,8,85,1,86,5,86,800,8,86,10,86,12,86, - 803,9,86,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,89,1,89,1,90,1,90, - 1,90,17,280,307,321,332,345,420,457,515,538,568,609,650,676,701,716,736, - 751,0,91,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, + 84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, + 91,2,92,7,92,2,93,7,93,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,5,0,204,8,0,10,0,12,0,207,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1, + 1,1,2,1,2,1,2,3,2,219,8,2,1,2,1,2,1,2,4,2,224,8,2,11,2,12,2,225,1,2,1, + 2,3,2,230,8,2,1,3,4,3,233,8,3,11,3,12,3,234,1,4,1,4,1,4,1,4,1,4,3,4,242, + 8,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10, + 1,10,1,11,1,11,3,11,263,8,11,1,12,1,12,1,12,1,12,5,12,269,8,12,10,12, + 12,12,272,9,12,1,12,1,12,1,13,1,13,1,14,1,14,3,14,280,8,14,1,14,1,14, + 1,15,5,15,285,8,15,10,15,12,15,288,9,15,1,15,1,15,1,15,3,15,293,8,15, + 1,15,1,15,3,15,297,8,15,1,15,1,15,1,16,1,16,1,16,1,16,1,17,1,17,1,17, + 1,17,1,17,1,17,1,18,5,18,312,8,18,10,18,12,18,315,9,18,1,18,1,18,1,18, + 1,18,3,18,321,8,18,1,18,1,18,1,19,5,19,326,8,19,10,19,12,19,329,9,19, + 1,19,1,19,1,19,1,19,1,19,1,20,5,20,337,8,20,10,20,12,20,340,9,20,1,20, + 1,20,1,20,1,20,1,20,1,21,1,21,1,22,5,22,350,8,22,10,22,12,22,353,9,22, + 1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,24,5,24,365,8,24,10,24, + 12,24,368,9,24,1,24,3,24,371,8,24,1,24,3,24,374,8,24,1,25,1,25,1,26,1, + 26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,30,3,30,389,8,30,1,30,1, + 30,5,30,393,8,30,10,30,12,30,396,9,30,1,30,1,30,1,31,1,31,1,31,1,31,1, + 31,1,31,1,31,3,31,407,8,31,1,32,1,32,1,32,1,32,3,32,413,8,32,1,33,1,33, + 1,34,1,34,1,35,1,35,1,36,1,36,1,36,1,36,5,36,425,8,36,10,36,12,36,428, + 9,36,1,37,1,37,1,37,3,37,433,8,37,1,38,5,38,436,8,38,10,38,12,38,439, + 9,38,1,39,1,39,1,39,3,39,444,8,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40, + 1,40,3,40,454,8,40,1,41,5,41,457,8,41,10,41,12,41,460,9,41,1,41,1,41, + 1,41,1,41,1,41,1,41,3,41,468,8,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42, + 5,42,477,8,42,10,42,12,42,480,9,42,1,43,1,43,1,43,1,44,5,44,486,8,44, + 10,44,12,44,489,9,44,1,45,5,45,492,8,45,10,45,12,45,495,9,45,1,45,1,45, + 1,45,3,45,500,8,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47, + 1,47,1,47,1,48,1,48,1,48,3,48,517,8,48,1,49,5,49,520,8,49,10,49,12,49, + 523,9,49,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52, + 5,52,537,8,52,10,52,12,52,540,9,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53, + 1,54,5,54,550,8,54,10,54,12,54,553,9,54,1,54,1,54,1,54,1,54,1,54,1,55, + 1,55,1,55,1,55,3,55,564,8,55,1,56,5,56,567,8,56,10,56,12,56,570,9,56, + 1,57,5,57,573,8,57,10,57,12,57,576,9,57,1,57,1,57,1,57,3,57,581,8,57, + 1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,3,58,594,8,58, + 1,59,5,59,597,8,59,10,59,12,59,600,9,59,1,60,5,60,603,8,60,10,60,12,60, + 606,9,60,1,60,1,60,1,60,3,60,611,8,60,1,60,1,60,1,60,1,60,1,61,1,61,3, + 61,619,8,61,1,62,5,62,622,8,62,10,62,12,62,625,9,62,1,63,1,63,1,63,3, + 63,630,8,63,1,63,1,63,1,63,1,63,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1, + 66,5,66,644,8,66,10,66,12,66,647,9,66,1,66,1,66,1,66,1,66,1,66,1,67,1, + 67,1,67,3,67,657,8,67,1,68,5,68,660,8,68,10,68,12,68,663,9,68,1,69,1, + 69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,3,70,676,8,70,1,71,5, + 71,679,8,71,10,71,12,71,682,9,71,1,72,5,72,685,8,72,10,72,12,72,688,9, + 72,1,72,1,72,1,72,3,72,693,8,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,3, + 73,702,8,73,1,74,5,74,705,8,74,10,74,12,74,708,9,74,1,75,5,75,711,8,75, + 10,75,12,75,714,9,75,1,75,1,75,1,75,3,75,719,8,75,1,75,1,75,1,75,1,75, + 1,76,1,76,3,76,727,8,76,1,77,5,77,730,8,77,10,77,12,77,733,9,77,1,78, + 5,78,736,8,78,10,78,12,78,739,9,78,1,78,1,78,1,78,3,78,744,8,78,1,78, + 1,78,1,78,1,78,1,79,5,79,751,8,79,10,79,12,79,754,9,79,1,79,1,79,1,79, + 1,79,1,80,1,80,3,80,762,8,80,1,81,5,81,765,8,81,10,81,12,81,768,9,81, + 1,82,5,82,771,8,82,10,82,12,82,774,9,82,1,82,1,82,1,82,3,82,779,8,82, + 1,82,1,82,1,82,1,82,1,83,5,83,786,8,83,10,83,12,83,789,9,83,1,83,1,83, + 1,83,3,83,794,8,83,1,83,1,83,1,83,1,83,1,84,5,84,801,8,84,10,84,12,84, + 804,9,84,1,84,1,84,1,84,1,84,3,84,810,8,84,1,85,5,85,813,8,85,10,85,12, + 85,816,9,85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,3,87,827,8,87, + 1,87,1,87,1,88,1,88,3,88,833,8,88,1,89,5,89,836,8,89,10,89,12,89,839, + 9,89,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,92,1,92,1,93,1,93,1,93, + 18,286,313,327,338,351,426,458,493,551,574,604,645,686,712,737,752,772, + 787,0,94,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, 44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88, 90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162, - 164,166,168,170,172,174,176,178,180,0,6,4,0,46,47,49,54,60,60,64,65,2, - 0,92,92,95,95,1,0,9,13,1,0,14,26,1,0,27,45,1,0,70,71,840,0,199,1,0,0, - 0,2,204,1,0,0,0,4,223,1,0,0,0,6,226,1,0,0,0,8,235,1,0,0,0,10,237,1,0, - 0,0,12,241,1,0,0,0,14,245,1,0,0,0,16,247,1,0,0,0,18,249,1,0,0,0,20,251, - 1,0,0,0,22,254,1,0,0,0,24,258,1,0,0,0,26,269,1,0,0,0,28,271,1,0,0,0,30, - 280,1,0,0,0,32,294,1,0,0,0,34,298,1,0,0,0,36,307,1,0,0,0,38,321,1,0,0, - 0,40,332,1,0,0,0,42,340,1,0,0,0,44,345,1,0,0,0,46,353,1,0,0,0,48,355, - 1,0,0,0,50,369,1,0,0,0,52,371,1,0,0,0,54,373,1,0,0,0,56,375,1,0,0,0,58, - 377,1,0,0,0,60,379,1,0,0,0,62,400,1,0,0,0,64,406,1,0,0,0,66,408,1,0,0, - 0,68,410,1,0,0,0,70,412,1,0,0,0,72,414,1,0,0,0,74,426,1,0,0,0,76,431, - 1,0,0,0,78,434,1,0,0,0,80,446,1,0,0,0,82,451,1,0,0,0,84,457,1,0,0,0,86, - 469,1,0,0,0,88,473,1,0,0,0,90,480,1,0,0,0,92,485,1,0,0,0,94,488,1,0,0, - 0,96,494,1,0,0,0,98,496,1,0,0,0,100,507,1,0,0,0,102,515,1,0,0,0,104,527, - 1,0,0,0,106,532,1,0,0,0,108,538,1,0,0,0,110,557,1,0,0,0,112,562,1,0,0, - 0,114,568,1,0,0,0,116,582,1,0,0,0,118,587,1,0,0,0,120,590,1,0,0,0,122, - 599,1,0,0,0,124,601,1,0,0,0,126,609,1,0,0,0,128,620,1,0,0,0,130,625,1, - 0,0,0,132,628,1,0,0,0,134,639,1,0,0,0,136,644,1,0,0,0,138,650,1,0,0,0, - 140,665,1,0,0,0,142,670,1,0,0,0,144,676,1,0,0,0,146,690,1,0,0,0,148,695, - 1,0,0,0,150,701,1,0,0,0,152,716,1,0,0,0,154,725,1,0,0,0,156,730,1,0,0, - 0,158,736,1,0,0,0,160,751,1,0,0,0,162,773,1,0,0,0,164,778,1,0,0,0,166, - 781,1,0,0,0,168,787,1,0,0,0,170,796,1,0,0,0,172,801,1,0,0,0,174,804,1, - 0,0,0,176,810,1,0,0,0,178,812,1,0,0,0,180,814,1,0,0,0,182,198,3,78,39, - 0,183,198,3,84,42,0,184,198,3,94,47,0,185,198,3,138,69,0,186,198,3,108, - 54,0,187,198,3,114,57,0,188,198,3,120,60,0,189,198,3,144,72,0,190,198, - 3,150,75,0,191,198,3,160,80,0,192,198,3,158,79,0,193,198,3,166,83,0,194, - 198,3,174,87,0,195,198,3,2,1,0,196,198,5,97,0,0,197,182,1,0,0,0,197,183, - 1,0,0,0,197,184,1,0,0,0,197,185,1,0,0,0,197,186,1,0,0,0,197,187,1,0,0, - 0,197,188,1,0,0,0,197,189,1,0,0,0,197,190,1,0,0,0,197,191,1,0,0,0,197, - 192,1,0,0,0,197,193,1,0,0,0,197,194,1,0,0,0,197,195,1,0,0,0,197,196,1, - 0,0,0,198,201,1,0,0,0,199,197,1,0,0,0,199,200,1,0,0,0,200,202,1,0,0,0, - 201,199,1,0,0,0,202,203,5,0,0,1,203,1,1,0,0,0,204,205,5,1,0,0,205,206, - 3,52,26,0,206,207,3,20,10,0,207,208,5,61,0,0,208,3,1,0,0,0,209,210,3, - 56,28,0,210,211,5,2,0,0,211,213,1,0,0,0,212,209,1,0,0,0,212,213,1,0,0, - 0,213,214,1,0,0,0,214,217,3,16,8,0,215,216,5,48,0,0,216,218,3,16,8,0, - 217,215,1,0,0,0,218,219,1,0,0,0,219,217,1,0,0,0,219,220,1,0,0,0,220,224, - 1,0,0,0,221,224,3,18,9,0,222,224,3,6,3,0,223,212,1,0,0,0,223,221,1,0, - 0,0,223,222,1,0,0,0,224,5,1,0,0,0,225,227,3,8,4,0,226,225,1,0,0,0,227, - 228,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,7,1,0,0,0,230,236,3,10, - 5,0,231,236,3,60,30,0,232,236,3,12,6,0,233,236,3,62,31,0,234,236,3,14, - 7,0,235,230,1,0,0,0,235,231,1,0,0,0,235,232,1,0,0,0,235,233,1,0,0,0,235, - 234,1,0,0,0,236,9,1,0,0,0,237,238,3,56,28,0,238,239,5,2,0,0,239,240,3, - 62,31,0,240,11,1,0,0,0,241,242,3,52,26,0,242,243,5,62,0,0,243,244,3,52, - 26,0,244,13,1,0,0,0,245,246,7,0,0,0,246,15,1,0,0,0,247,248,3,62,31,0, - 248,17,1,0,0,0,249,250,5,96,0,0,250,19,1,0,0,0,251,252,5,63,0,0,252,253, - 3,4,2,0,253,21,1,0,0,0,254,256,3,52,26,0,255,257,3,20,10,0,256,255,1, - 0,0,0,256,257,1,0,0,0,257,23,1,0,0,0,258,259,5,68,0,0,259,264,3,22,11, - 0,260,261,5,3,0,0,261,263,3,22,11,0,262,260,1,0,0,0,263,266,1,0,0,0,264, - 262,1,0,0,0,264,265,1,0,0,0,265,267,1,0,0,0,266,264,1,0,0,0,267,268,5, - 69,0,0,268,25,1,0,0,0,269,270,5,93,0,0,270,27,1,0,0,0,271,273,5,68,0, - 0,272,274,3,26,13,0,273,272,1,0,0,0,273,274,1,0,0,0,274,275,1,0,0,0,275, - 276,5,69,0,0,276,29,1,0,0,0,277,279,3,24,12,0,278,277,1,0,0,0,279,282, - 1,0,0,0,280,281,1,0,0,0,280,278,1,0,0,0,281,283,1,0,0,0,282,280,1,0,0, - 0,283,284,3,66,33,0,284,286,3,52,26,0,285,287,3,28,14,0,286,285,1,0,0, - 0,286,287,1,0,0,0,287,290,1,0,0,0,288,289,5,63,0,0,289,291,3,62,31,0, - 290,288,1,0,0,0,290,291,1,0,0,0,291,292,1,0,0,0,292,293,5,61,0,0,293, - 31,1,0,0,0,294,295,5,86,0,0,295,296,3,52,26,0,296,297,5,61,0,0,297,33, - 1,0,0,0,298,299,5,4,0,0,299,300,3,52,26,0,300,301,5,63,0,0,301,302,3, - 62,31,0,302,303,5,61,0,0,303,35,1,0,0,0,304,306,3,24,12,0,305,304,1,0, - 0,0,306,309,1,0,0,0,307,308,1,0,0,0,307,305,1,0,0,0,308,310,1,0,0,0,309, - 307,1,0,0,0,310,311,5,5,0,0,311,314,3,52,26,0,312,313,5,63,0,0,313,315, - 3,98,49,0,314,312,1,0,0,0,314,315,1,0,0,0,315,316,1,0,0,0,316,317,5,61, - 0,0,317,37,1,0,0,0,318,320,3,24,12,0,319,318,1,0,0,0,320,323,1,0,0,0, - 321,322,1,0,0,0,321,319,1,0,0,0,322,324,1,0,0,0,323,321,1,0,0,0,324,325, - 5,6,0,0,325,326,5,63,0,0,326,327,3,98,49,0,327,328,5,61,0,0,328,39,1, - 0,0,0,329,331,3,24,12,0,330,329,1,0,0,0,331,334,1,0,0,0,332,333,1,0,0, - 0,332,330,1,0,0,0,333,335,1,0,0,0,334,332,1,0,0,0,335,336,5,7,0,0,336, - 337,5,63,0,0,337,338,3,98,49,0,338,339,5,61,0,0,339,41,1,0,0,0,340,341, - 5,99,0,0,341,43,1,0,0,0,342,344,3,24,12,0,343,342,1,0,0,0,344,347,1,0, - 0,0,345,346,1,0,0,0,345,343,1,0,0,0,346,348,1,0,0,0,347,345,1,0,0,0,348, - 349,3,178,89,0,349,350,5,63,0,0,350,351,3,62,31,0,351,352,5,61,0,0,352, - 45,1,0,0,0,353,354,5,92,0,0,354,47,1,0,0,0,355,364,3,46,23,0,356,360, - 5,52,0,0,357,359,3,58,29,0,358,357,1,0,0,0,359,362,1,0,0,0,360,358,1, - 0,0,0,360,361,1,0,0,0,361,363,1,0,0,0,362,360,1,0,0,0,363,365,5,51,0, - 0,364,356,1,0,0,0,364,365,1,0,0,0,365,367,1,0,0,0,366,368,3,42,21,0,367, - 366,1,0,0,0,367,368,1,0,0,0,368,49,1,0,0,0,369,370,5,92,0,0,370,51,1, - 0,0,0,371,372,5,92,0,0,372,53,1,0,0,0,373,374,5,92,0,0,374,55,1,0,0,0, - 375,376,5,92,0,0,376,57,1,0,0,0,377,378,5,92,0,0,378,59,1,0,0,0,379,380, - 5,92,0,0,380,382,5,64,0,0,381,383,3,64,32,0,382,381,1,0,0,0,382,383,1, - 0,0,0,383,388,1,0,0,0,384,385,5,3,0,0,385,387,3,64,32,0,386,384,1,0,0, - 0,387,390,1,0,0,0,388,386,1,0,0,0,388,389,1,0,0,0,389,391,1,0,0,0,390, - 388,1,0,0,0,391,392,5,65,0,0,392,61,1,0,0,0,393,401,3,176,88,0,394,401, - 5,92,0,0,395,401,5,93,0,0,396,401,5,94,0,0,397,401,3,180,90,0,398,401, - 3,60,30,0,399,401,3,98,49,0,400,393,1,0,0,0,400,394,1,0,0,0,400,395,1, - 0,0,0,400,396,1,0,0,0,400,397,1,0,0,0,400,398,1,0,0,0,400,399,1,0,0,0, - 401,63,1,0,0,0,402,407,5,92,0,0,403,407,5,93,0,0,404,407,5,94,0,0,405, - 407,3,180,90,0,406,402,1,0,0,0,406,403,1,0,0,0,406,404,1,0,0,0,406,405, - 1,0,0,0,407,65,1,0,0,0,408,409,3,48,24,0,409,67,1,0,0,0,410,411,5,102, - 0,0,411,69,1,0,0,0,412,413,7,1,0,0,413,71,1,0,0,0,414,415,5,8,0,0,415, - 420,3,50,25,0,416,417,5,3,0,0,417,419,3,50,25,0,418,416,1,0,0,0,419,422, - 1,0,0,0,420,421,1,0,0,0,420,418,1,0,0,0,421,73,1,0,0,0,422,420,1,0,0, - 0,423,427,3,32,16,0,424,427,3,34,17,0,425,427,5,97,0,0,426,423,1,0,0, - 0,426,424,1,0,0,0,426,425,1,0,0,0,427,75,1,0,0,0,428,430,3,74,37,0,429, - 428,1,0,0,0,430,433,1,0,0,0,431,429,1,0,0,0,431,432,1,0,0,0,432,77,1, - 0,0,0,433,431,1,0,0,0,434,435,5,73,0,0,435,437,3,52,26,0,436,438,3,72, - 36,0,437,436,1,0,0,0,437,438,1,0,0,0,438,439,1,0,0,0,439,440,5,66,0,0, - 440,441,3,76,38,0,441,442,5,67,0,0,442,79,1,0,0,0,443,447,3,30,15,0,444, - 447,3,68,34,0,445,447,5,97,0,0,446,443,1,0,0,0,446,444,1,0,0,0,446,445, - 1,0,0,0,447,81,1,0,0,0,448,450,3,80,40,0,449,448,1,0,0,0,450,453,1,0, - 0,0,451,449,1,0,0,0,451,452,1,0,0,0,452,83,1,0,0,0,453,451,1,0,0,0,454, - 456,3,24,12,0,455,454,1,0,0,0,456,459,1,0,0,0,457,458,1,0,0,0,457,455, - 1,0,0,0,458,460,1,0,0,0,459,457,1,0,0,0,460,461,5,74,0,0,461,463,3,52, - 26,0,462,464,3,72,36,0,463,462,1,0,0,0,463,464,1,0,0,0,464,465,1,0,0, - 0,465,466,5,66,0,0,466,467,3,82,41,0,467,468,5,67,0,0,468,85,1,0,0,0, - 469,470,3,66,33,0,470,471,3,52,26,0,471,472,5,61,0,0,472,87,1,0,0,0,473, - 474,5,89,0,0,474,475,3,52,26,0,475,476,5,61,0,0,476,89,1,0,0,0,477,481, - 3,86,43,0,478,481,3,88,44,0,479,481,5,97,0,0,480,477,1,0,0,0,480,478, - 1,0,0,0,480,479,1,0,0,0,481,91,1,0,0,0,482,484,3,90,45,0,483,482,1,0, - 0,0,484,487,1,0,0,0,485,483,1,0,0,0,485,486,1,0,0,0,486,93,1,0,0,0,487, - 485,1,0,0,0,488,489,5,87,0,0,489,490,3,52,26,0,490,491,5,66,0,0,491,492, - 3,92,46,0,492,493,5,67,0,0,493,95,1,0,0,0,494,495,3,62,31,0,495,97,1, - 0,0,0,496,497,5,66,0,0,497,502,3,96,48,0,498,499,5,3,0,0,499,501,3,96, - 48,0,500,498,1,0,0,0,501,504,1,0,0,0,502,500,1,0,0,0,502,503,1,0,0,0, - 503,505,1,0,0,0,504,502,1,0,0,0,505,506,5,67,0,0,506,99,1,0,0,0,507,508, - 5,90,0,0,508,509,5,63,0,0,509,510,3,52,26,0,510,511,5,61,0,0,511,101, - 1,0,0,0,512,514,3,24,12,0,513,512,1,0,0,0,514,517,1,0,0,0,515,516,1,0, - 0,0,515,513,1,0,0,0,516,518,1,0,0,0,517,515,1,0,0,0,518,519,3,176,88, - 0,519,520,5,63,0,0,520,521,3,70,35,0,521,522,5,61,0,0,522,103,1,0,0,0, - 523,528,3,100,50,0,524,528,3,102,51,0,525,528,3,36,18,0,526,528,5,97, - 0,0,527,523,1,0,0,0,527,524,1,0,0,0,527,525,1,0,0,0,527,526,1,0,0,0,528, - 105,1,0,0,0,529,531,3,104,52,0,530,529,1,0,0,0,531,534,1,0,0,0,532,530, - 1,0,0,0,532,533,1,0,0,0,533,107,1,0,0,0,534,532,1,0,0,0,535,537,3,24, - 12,0,536,535,1,0,0,0,537,540,1,0,0,0,538,539,1,0,0,0,538,536,1,0,0,0, - 539,541,1,0,0,0,540,538,1,0,0,0,541,542,5,75,0,0,542,544,3,52,26,0,543, - 545,3,72,36,0,544,543,1,0,0,0,544,545,1,0,0,0,545,546,1,0,0,0,546,547, - 5,66,0,0,547,548,3,106,53,0,548,549,5,67,0,0,549,109,1,0,0,0,550,558, - 3,100,50,0,551,558,3,102,51,0,552,558,3,36,18,0,553,558,3,38,19,0,554, - 558,3,40,20,0,555,558,3,44,22,0,556,558,5,97,0,0,557,550,1,0,0,0,557, - 551,1,0,0,0,557,552,1,0,0,0,557,553,1,0,0,0,557,554,1,0,0,0,557,555,1, - 0,0,0,557,556,1,0,0,0,558,111,1,0,0,0,559,561,3,110,55,0,560,559,1,0, - 0,0,561,564,1,0,0,0,562,560,1,0,0,0,562,563,1,0,0,0,563,113,1,0,0,0,564, - 562,1,0,0,0,565,567,3,24,12,0,566,565,1,0,0,0,567,570,1,0,0,0,568,569, - 1,0,0,0,568,566,1,0,0,0,569,571,1,0,0,0,570,568,1,0,0,0,571,572,5,76, - 0,0,572,574,3,52,26,0,573,575,3,72,36,0,574,573,1,0,0,0,574,575,1,0,0, - 0,575,576,1,0,0,0,576,577,5,66,0,0,577,578,3,112,56,0,578,579,5,67,0, - 0,579,115,1,0,0,0,580,583,3,100,50,0,581,583,5,97,0,0,582,580,1,0,0,0, - 582,581,1,0,0,0,583,117,1,0,0,0,584,586,3,116,58,0,585,584,1,0,0,0,586, - 589,1,0,0,0,587,585,1,0,0,0,587,588,1,0,0,0,588,119,1,0,0,0,589,587,1, - 0,0,0,590,591,5,77,0,0,591,593,3,52,26,0,592,594,3,72,36,0,593,592,1, - 0,0,0,593,594,1,0,0,0,594,595,1,0,0,0,595,596,5,66,0,0,596,597,3,118, - 59,0,597,598,5,67,0,0,598,121,1,0,0,0,599,600,7,2,0,0,600,123,1,0,0,0, - 601,602,3,122,61,0,602,603,5,63,0,0,603,604,3,62,31,0,604,605,5,61,0, - 0,605,125,1,0,0,0,606,608,3,24,12,0,607,606,1,0,0,0,608,611,1,0,0,0,609, - 610,1,0,0,0,609,607,1,0,0,0,610,612,1,0,0,0,611,609,1,0,0,0,612,613,5, - 80,0,0,613,614,3,66,33,0,614,615,3,52,26,0,615,616,5,61,0,0,616,127,1, - 0,0,0,617,621,3,124,62,0,618,621,3,126,63,0,619,621,5,97,0,0,620,617, - 1,0,0,0,620,618,1,0,0,0,620,619,1,0,0,0,621,129,1,0,0,0,622,624,3,128, - 64,0,623,622,1,0,0,0,624,627,1,0,0,0,625,623,1,0,0,0,625,626,1,0,0,0, - 626,131,1,0,0,0,627,625,1,0,0,0,628,629,5,79,0,0,629,630,3,52,26,0,630, - 631,5,66,0,0,631,632,3,130,65,0,632,633,5,67,0,0,633,133,1,0,0,0,634, - 640,3,100,50,0,635,640,3,102,51,0,636,640,3,36,18,0,637,640,3,132,66, - 0,638,640,5,97,0,0,639,634,1,0,0,0,639,635,1,0,0,0,639,636,1,0,0,0,639, - 637,1,0,0,0,639,638,1,0,0,0,640,135,1,0,0,0,641,643,3,134,67,0,642,641, - 1,0,0,0,643,646,1,0,0,0,644,642,1,0,0,0,644,645,1,0,0,0,645,137,1,0,0, - 0,646,644,1,0,0,0,647,649,3,24,12,0,648,647,1,0,0,0,649,652,1,0,0,0,650, - 651,1,0,0,0,650,648,1,0,0,0,651,653,1,0,0,0,652,650,1,0,0,0,653,654,5, - 78,0,0,654,656,3,52,26,0,655,657,3,72,36,0,656,655,1,0,0,0,656,657,1, - 0,0,0,657,658,1,0,0,0,658,659,5,66,0,0,659,660,3,136,68,0,660,661,5,67, - 0,0,661,139,1,0,0,0,662,666,3,102,51,0,663,666,5,97,0,0,664,666,3,44, - 22,0,665,662,1,0,0,0,665,663,1,0,0,0,665,664,1,0,0,0,666,141,1,0,0,0, - 667,669,3,140,70,0,668,667,1,0,0,0,669,672,1,0,0,0,670,668,1,0,0,0,670, - 671,1,0,0,0,671,143,1,0,0,0,672,670,1,0,0,0,673,675,3,24,12,0,674,673, - 1,0,0,0,675,678,1,0,0,0,676,677,1,0,0,0,676,674,1,0,0,0,677,679,1,0,0, - 0,678,676,1,0,0,0,679,680,5,82,0,0,680,682,3,52,26,0,681,683,3,72,36, - 0,682,681,1,0,0,0,682,683,1,0,0,0,683,684,1,0,0,0,684,685,5,66,0,0,685, - 686,3,142,71,0,686,687,5,67,0,0,687,145,1,0,0,0,688,691,3,102,51,0,689, - 691,5,97,0,0,690,688,1,0,0,0,690,689,1,0,0,0,691,147,1,0,0,0,692,694, - 3,146,73,0,693,692,1,0,0,0,694,697,1,0,0,0,695,693,1,0,0,0,695,696,1, - 0,0,0,696,149,1,0,0,0,697,695,1,0,0,0,698,700,3,24,12,0,699,698,1,0,0, - 0,700,703,1,0,0,0,701,702,1,0,0,0,701,699,1,0,0,0,702,704,1,0,0,0,703, - 701,1,0,0,0,704,705,5,81,0,0,705,707,3,52,26,0,706,708,3,72,36,0,707, - 706,1,0,0,0,707,708,1,0,0,0,708,709,1,0,0,0,709,710,5,66,0,0,710,711, - 3,148,74,0,711,712,5,67,0,0,712,151,1,0,0,0,713,715,3,24,12,0,714,713, - 1,0,0,0,715,718,1,0,0,0,716,717,1,0,0,0,716,714,1,0,0,0,717,719,1,0,0, - 0,718,716,1,0,0,0,719,720,3,66,33,0,720,721,3,52,26,0,721,722,5,61,0, - 0,722,153,1,0,0,0,723,726,3,152,76,0,724,726,5,97,0,0,725,723,1,0,0,0, - 725,724,1,0,0,0,726,155,1,0,0,0,727,729,3,154,77,0,728,727,1,0,0,0,729, - 732,1,0,0,0,730,728,1,0,0,0,730,731,1,0,0,0,731,157,1,0,0,0,732,730,1, - 0,0,0,733,735,3,24,12,0,734,733,1,0,0,0,735,738,1,0,0,0,736,737,1,0,0, - 0,736,734,1,0,0,0,737,739,1,0,0,0,738,736,1,0,0,0,739,740,5,84,0,0,740, - 742,3,52,26,0,741,743,3,72,36,0,742,741,1,0,0,0,742,743,1,0,0,0,743,744, - 1,0,0,0,744,745,5,66,0,0,745,746,3,156,78,0,746,747,5,67,0,0,747,159, - 1,0,0,0,748,750,3,24,12,0,749,748,1,0,0,0,750,753,1,0,0,0,751,752,1,0, - 0,0,751,749,1,0,0,0,752,754,1,0,0,0,753,751,1,0,0,0,754,755,5,83,0,0, - 755,757,3,52,26,0,756,758,3,72,36,0,757,756,1,0,0,0,757,758,1,0,0,0,758, - 759,1,0,0,0,759,760,5,66,0,0,760,761,3,156,78,0,761,762,5,67,0,0,762, - 161,1,0,0,0,763,765,3,24,12,0,764,763,1,0,0,0,765,768,1,0,0,0,766,764, - 1,0,0,0,766,767,1,0,0,0,767,769,1,0,0,0,768,766,1,0,0,0,769,770,3,52, - 26,0,770,771,5,61,0,0,771,774,1,0,0,0,772,774,5,97,0,0,773,766,1,0,0, - 0,773,772,1,0,0,0,774,163,1,0,0,0,775,777,3,162,81,0,776,775,1,0,0,0, - 777,780,1,0,0,0,778,776,1,0,0,0,778,779,1,0,0,0,779,165,1,0,0,0,780,778, - 1,0,0,0,781,782,5,85,0,0,782,783,3,52,26,0,783,784,5,66,0,0,784,785,3, - 164,82,0,785,786,5,67,0,0,786,167,1,0,0,0,787,790,3,52,26,0,788,789,5, - 63,0,0,789,791,3,62,31,0,790,788,1,0,0,0,790,791,1,0,0,0,791,792,1,0, - 0,0,792,793,5,61,0,0,793,169,1,0,0,0,794,797,3,168,84,0,795,797,5,97, - 0,0,796,794,1,0,0,0,796,795,1,0,0,0,797,171,1,0,0,0,798,800,3,170,85, - 0,799,798,1,0,0,0,800,803,1,0,0,0,801,799,1,0,0,0,801,802,1,0,0,0,802, - 173,1,0,0,0,803,801,1,0,0,0,804,805,5,91,0,0,805,806,3,52,26,0,806,807, - 5,66,0,0,807,808,3,172,86,0,808,809,5,67,0,0,809,175,1,0,0,0,810,811, - 7,3,0,0,811,177,1,0,0,0,812,813,7,4,0,0,813,179,1,0,0,0,814,815,7,5,0, - 0,815,181,1,0,0,0,76,197,199,212,219,223,228,235,256,264,273,280,286, - 290,307,314,321,332,345,360,364,367,382,388,400,406,420,426,431,437,446, - 451,457,463,480,485,502,515,527,532,538,544,557,562,568,574,582,587,593, - 609,620,625,639,644,650,656,665,670,676,682,690,695,701,707,716,725,730, - 736,742,751,757,766,773,778,790,796,801 + 164,166,168,170,172,174,176,178,180,182,184,186,0,7,4,0,45,46,48,53,59, + 59,64,65,2,0,92,92,95,95,1,0,64,65,1,0,8,12,1,0,13,25,1,0,26,44,1,0,70, + 71,878,0,205,1,0,0,0,2,210,1,0,0,0,4,229,1,0,0,0,6,232,1,0,0,0,8,241, + 1,0,0,0,10,243,1,0,0,0,12,247,1,0,0,0,14,251,1,0,0,0,16,253,1,0,0,0,18, + 255,1,0,0,0,20,257,1,0,0,0,22,260,1,0,0,0,24,264,1,0,0,0,26,275,1,0,0, + 0,28,277,1,0,0,0,30,286,1,0,0,0,32,300,1,0,0,0,34,304,1,0,0,0,36,313, + 1,0,0,0,38,327,1,0,0,0,40,338,1,0,0,0,42,346,1,0,0,0,44,351,1,0,0,0,46, + 359,1,0,0,0,48,361,1,0,0,0,50,375,1,0,0,0,52,377,1,0,0,0,54,379,1,0,0, + 0,56,381,1,0,0,0,58,383,1,0,0,0,60,385,1,0,0,0,62,406,1,0,0,0,64,412, + 1,0,0,0,66,414,1,0,0,0,68,416,1,0,0,0,70,418,1,0,0,0,72,420,1,0,0,0,74, + 432,1,0,0,0,76,437,1,0,0,0,78,440,1,0,0,0,80,453,1,0,0,0,82,458,1,0,0, + 0,84,478,1,0,0,0,86,481,1,0,0,0,88,487,1,0,0,0,90,493,1,0,0,0,92,505, + 1,0,0,0,94,509,1,0,0,0,96,516,1,0,0,0,98,521,1,0,0,0,100,524,1,0,0,0, + 102,530,1,0,0,0,104,532,1,0,0,0,106,543,1,0,0,0,108,551,1,0,0,0,110,563, + 1,0,0,0,112,568,1,0,0,0,114,574,1,0,0,0,116,593,1,0,0,0,118,598,1,0,0, + 0,120,604,1,0,0,0,122,618,1,0,0,0,124,623,1,0,0,0,126,626,1,0,0,0,128, + 635,1,0,0,0,130,637,1,0,0,0,132,645,1,0,0,0,134,656,1,0,0,0,136,661,1, + 0,0,0,138,664,1,0,0,0,140,675,1,0,0,0,142,680,1,0,0,0,144,686,1,0,0,0, + 146,701,1,0,0,0,148,706,1,0,0,0,150,712,1,0,0,0,152,726,1,0,0,0,154,731, + 1,0,0,0,156,737,1,0,0,0,158,752,1,0,0,0,160,761,1,0,0,0,162,766,1,0,0, + 0,164,772,1,0,0,0,166,787,1,0,0,0,168,809,1,0,0,0,170,814,1,0,0,0,172, + 817,1,0,0,0,174,823,1,0,0,0,176,832,1,0,0,0,178,837,1,0,0,0,180,840,1, + 0,0,0,182,846,1,0,0,0,184,848,1,0,0,0,186,850,1,0,0,0,188,204,3,78,39, + 0,189,204,3,90,45,0,190,204,3,100,50,0,191,204,3,144,72,0,192,204,3,114, + 57,0,193,204,3,120,60,0,194,204,3,126,63,0,195,204,3,150,75,0,196,204, + 3,156,78,0,197,204,3,166,83,0,198,204,3,164,82,0,199,204,3,172,86,0,200, + 204,3,180,90,0,201,204,3,2,1,0,202,204,5,97,0,0,203,188,1,0,0,0,203,189, + 1,0,0,0,203,190,1,0,0,0,203,191,1,0,0,0,203,192,1,0,0,0,203,193,1,0,0, + 0,203,194,1,0,0,0,203,195,1,0,0,0,203,196,1,0,0,0,203,197,1,0,0,0,203, + 198,1,0,0,0,203,199,1,0,0,0,203,200,1,0,0,0,203,201,1,0,0,0,203,202,1, + 0,0,0,204,207,1,0,0,0,205,203,1,0,0,0,205,206,1,0,0,0,206,208,1,0,0,0, + 207,205,1,0,0,0,208,209,5,0,0,1,209,1,1,0,0,0,210,211,5,1,0,0,211,212, + 3,52,26,0,212,213,3,20,10,0,213,214,5,60,0,0,214,3,1,0,0,0,215,216,3, + 56,28,0,216,217,5,2,0,0,217,219,1,0,0,0,218,215,1,0,0,0,218,219,1,0,0, + 0,219,220,1,0,0,0,220,223,3,16,8,0,221,222,5,47,0,0,222,224,3,16,8,0, + 223,221,1,0,0,0,224,225,1,0,0,0,225,223,1,0,0,0,225,226,1,0,0,0,226,230, + 1,0,0,0,227,230,3,18,9,0,228,230,3,6,3,0,229,218,1,0,0,0,229,227,1,0, + 0,0,229,228,1,0,0,0,230,5,1,0,0,0,231,233,3,8,4,0,232,231,1,0,0,0,233, + 234,1,0,0,0,234,232,1,0,0,0,234,235,1,0,0,0,235,7,1,0,0,0,236,242,3,10, + 5,0,237,242,3,60,30,0,238,242,3,12,6,0,239,242,3,62,31,0,240,242,3,14, + 7,0,241,236,1,0,0,0,241,237,1,0,0,0,241,238,1,0,0,0,241,239,1,0,0,0,241, + 240,1,0,0,0,242,9,1,0,0,0,243,244,3,56,28,0,244,245,5,2,0,0,245,246,3, + 62,31,0,246,11,1,0,0,0,247,248,3,52,26,0,248,249,5,62,0,0,249,250,3,52, + 26,0,250,13,1,0,0,0,251,252,7,0,0,0,252,15,1,0,0,0,253,254,3,62,31,0, + 254,17,1,0,0,0,255,256,5,96,0,0,256,19,1,0,0,0,257,258,5,63,0,0,258,259, + 3,4,2,0,259,21,1,0,0,0,260,262,3,52,26,0,261,263,3,20,10,0,262,261,1, + 0,0,0,262,263,1,0,0,0,263,23,1,0,0,0,264,265,5,68,0,0,265,270,3,22,11, + 0,266,267,5,3,0,0,267,269,3,22,11,0,268,266,1,0,0,0,269,272,1,0,0,0,270, + 268,1,0,0,0,270,271,1,0,0,0,271,273,1,0,0,0,272,270,1,0,0,0,273,274,5, + 69,0,0,274,25,1,0,0,0,275,276,5,93,0,0,276,27,1,0,0,0,277,279,5,68,0, + 0,278,280,3,26,13,0,279,278,1,0,0,0,279,280,1,0,0,0,280,281,1,0,0,0,281, + 282,5,69,0,0,282,29,1,0,0,0,283,285,3,24,12,0,284,283,1,0,0,0,285,288, + 1,0,0,0,286,287,1,0,0,0,286,284,1,0,0,0,287,289,1,0,0,0,288,286,1,0,0, + 0,289,290,3,66,33,0,290,292,3,52,26,0,291,293,3,28,14,0,292,291,1,0,0, + 0,292,293,1,0,0,0,293,296,1,0,0,0,294,295,5,63,0,0,295,297,3,62,31,0, + 296,294,1,0,0,0,296,297,1,0,0,0,297,298,1,0,0,0,298,299,5,60,0,0,299, + 31,1,0,0,0,300,301,5,86,0,0,301,302,3,52,26,0,302,303,5,60,0,0,303,33, + 1,0,0,0,304,305,5,4,0,0,305,306,3,52,26,0,306,307,5,63,0,0,307,308,3, + 62,31,0,308,309,5,60,0,0,309,35,1,0,0,0,310,312,3,24,12,0,311,310,1,0, + 0,0,312,315,1,0,0,0,313,314,1,0,0,0,313,311,1,0,0,0,314,316,1,0,0,0,315, + 313,1,0,0,0,316,317,5,5,0,0,317,320,3,52,26,0,318,319,5,63,0,0,319,321, + 3,104,52,0,320,318,1,0,0,0,320,321,1,0,0,0,321,322,1,0,0,0,322,323,5, + 60,0,0,323,37,1,0,0,0,324,326,3,24,12,0,325,324,1,0,0,0,326,329,1,0,0, + 0,327,328,1,0,0,0,327,325,1,0,0,0,328,330,1,0,0,0,329,327,1,0,0,0,330, + 331,5,6,0,0,331,332,5,63,0,0,332,333,3,104,52,0,333,334,5,60,0,0,334, + 39,1,0,0,0,335,337,3,24,12,0,336,335,1,0,0,0,337,340,1,0,0,0,338,339, + 1,0,0,0,338,336,1,0,0,0,339,341,1,0,0,0,340,338,1,0,0,0,341,342,5,7,0, + 0,342,343,5,63,0,0,343,344,3,104,52,0,344,345,5,60,0,0,345,41,1,0,0,0, + 346,347,5,99,0,0,347,43,1,0,0,0,348,350,3,24,12,0,349,348,1,0,0,0,350, + 353,1,0,0,0,351,352,1,0,0,0,351,349,1,0,0,0,352,354,1,0,0,0,353,351,1, + 0,0,0,354,355,3,184,92,0,355,356,5,63,0,0,356,357,3,62,31,0,357,358,5, + 60,0,0,358,45,1,0,0,0,359,360,5,92,0,0,360,47,1,0,0,0,361,370,3,46,23, + 0,362,366,5,51,0,0,363,365,3,58,29,0,364,363,1,0,0,0,365,368,1,0,0,0, + 366,364,1,0,0,0,366,367,1,0,0,0,367,369,1,0,0,0,368,366,1,0,0,0,369,371, + 5,50,0,0,370,362,1,0,0,0,370,371,1,0,0,0,371,373,1,0,0,0,372,374,3,42, + 21,0,373,372,1,0,0,0,373,374,1,0,0,0,374,49,1,0,0,0,375,376,5,92,0,0, + 376,51,1,0,0,0,377,378,5,92,0,0,378,53,1,0,0,0,379,380,5,92,0,0,380,55, + 1,0,0,0,381,382,5,92,0,0,382,57,1,0,0,0,383,384,5,92,0,0,384,59,1,0,0, + 0,385,386,5,92,0,0,386,388,5,64,0,0,387,389,3,64,32,0,388,387,1,0,0,0, + 388,389,1,0,0,0,389,394,1,0,0,0,390,391,5,3,0,0,391,393,3,64,32,0,392, + 390,1,0,0,0,393,396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,397,1, + 0,0,0,396,394,1,0,0,0,397,398,5,65,0,0,398,61,1,0,0,0,399,407,3,182,91, + 0,400,407,5,92,0,0,401,407,5,93,0,0,402,407,5,94,0,0,403,407,3,186,93, + 0,404,407,3,60,30,0,405,407,3,104,52,0,406,399,1,0,0,0,406,400,1,0,0, + 0,406,401,1,0,0,0,406,402,1,0,0,0,406,403,1,0,0,0,406,404,1,0,0,0,406, + 405,1,0,0,0,407,63,1,0,0,0,408,413,5,92,0,0,409,413,5,93,0,0,410,413, + 5,94,0,0,411,413,3,186,93,0,412,408,1,0,0,0,412,409,1,0,0,0,412,410,1, + 0,0,0,412,411,1,0,0,0,413,65,1,0,0,0,414,415,3,48,24,0,415,67,1,0,0,0, + 416,417,5,103,0,0,417,69,1,0,0,0,418,419,7,1,0,0,419,71,1,0,0,0,420,421, + 5,61,0,0,421,426,3,50,25,0,422,423,5,3,0,0,423,425,3,50,25,0,424,422, + 1,0,0,0,425,428,1,0,0,0,426,427,1,0,0,0,426,424,1,0,0,0,427,73,1,0,0, + 0,428,426,1,0,0,0,429,433,3,32,16,0,430,433,3,34,17,0,431,433,5,97,0, + 0,432,429,1,0,0,0,432,430,1,0,0,0,432,431,1,0,0,0,433,75,1,0,0,0,434, + 436,3,74,37,0,435,434,1,0,0,0,436,439,1,0,0,0,437,435,1,0,0,0,437,438, + 1,0,0,0,438,77,1,0,0,0,439,437,1,0,0,0,440,441,5,73,0,0,441,443,3,52, + 26,0,442,444,3,72,36,0,443,442,1,0,0,0,443,444,1,0,0,0,444,445,1,0,0, + 0,445,446,5,66,0,0,446,447,3,76,38,0,447,448,5,67,0,0,448,79,1,0,0,0, + 449,454,3,30,15,0,450,454,3,82,41,0,451,454,3,68,34,0,452,454,5,97,0, + 0,453,449,1,0,0,0,453,450,1,0,0,0,453,451,1,0,0,0,453,452,1,0,0,0,454, + 81,1,0,0,0,455,457,3,24,12,0,456,455,1,0,0,0,457,460,1,0,0,0,458,459, + 1,0,0,0,458,456,1,0,0,0,459,461,1,0,0,0,460,458,1,0,0,0,461,462,3,66, + 33,0,462,463,3,52,26,0,463,464,5,64,0,0,464,465,3,84,42,0,465,467,5,65, + 0,0,466,468,3,86,43,0,467,466,1,0,0,0,467,468,1,0,0,0,468,469,1,0,0,0, + 469,470,5,100,0,0,470,83,1,0,0,0,471,472,5,64,0,0,472,473,3,84,42,0,473, + 474,5,65,0,0,474,477,1,0,0,0,475,477,8,2,0,0,476,471,1,0,0,0,476,475, + 1,0,0,0,477,480,1,0,0,0,478,476,1,0,0,0,478,479,1,0,0,0,479,85,1,0,0, + 0,480,478,1,0,0,0,481,482,5,61,0,0,482,483,5,92,0,0,483,87,1,0,0,0,484, + 486,3,80,40,0,485,484,1,0,0,0,486,489,1,0,0,0,487,485,1,0,0,0,487,488, + 1,0,0,0,488,89,1,0,0,0,489,487,1,0,0,0,490,492,3,24,12,0,491,490,1,0, + 0,0,492,495,1,0,0,0,493,494,1,0,0,0,493,491,1,0,0,0,494,496,1,0,0,0,495, + 493,1,0,0,0,496,497,5,74,0,0,497,499,3,52,26,0,498,500,3,72,36,0,499, + 498,1,0,0,0,499,500,1,0,0,0,500,501,1,0,0,0,501,502,5,66,0,0,502,503, + 3,88,44,0,503,504,5,67,0,0,504,91,1,0,0,0,505,506,3,66,33,0,506,507,3, + 52,26,0,507,508,5,60,0,0,508,93,1,0,0,0,509,510,5,89,0,0,510,511,3,52, + 26,0,511,512,5,60,0,0,512,95,1,0,0,0,513,517,3,92,46,0,514,517,3,94,47, + 0,515,517,5,97,0,0,516,513,1,0,0,0,516,514,1,0,0,0,516,515,1,0,0,0,517, + 97,1,0,0,0,518,520,3,96,48,0,519,518,1,0,0,0,520,523,1,0,0,0,521,519, + 1,0,0,0,521,522,1,0,0,0,522,99,1,0,0,0,523,521,1,0,0,0,524,525,5,87,0, + 0,525,526,3,52,26,0,526,527,5,66,0,0,527,528,3,98,49,0,528,529,5,67,0, + 0,529,101,1,0,0,0,530,531,3,62,31,0,531,103,1,0,0,0,532,533,5,66,0,0, + 533,538,3,102,51,0,534,535,5,3,0,0,535,537,3,102,51,0,536,534,1,0,0,0, + 537,540,1,0,0,0,538,536,1,0,0,0,538,539,1,0,0,0,539,541,1,0,0,0,540,538, + 1,0,0,0,541,542,5,67,0,0,542,105,1,0,0,0,543,544,5,90,0,0,544,545,5,63, + 0,0,545,546,3,52,26,0,546,547,5,60,0,0,547,107,1,0,0,0,548,550,3,24,12, + 0,549,548,1,0,0,0,550,553,1,0,0,0,551,552,1,0,0,0,551,549,1,0,0,0,552, + 554,1,0,0,0,553,551,1,0,0,0,554,555,3,182,91,0,555,556,5,63,0,0,556,557, + 3,70,35,0,557,558,5,60,0,0,558,109,1,0,0,0,559,564,3,106,53,0,560,564, + 3,108,54,0,561,564,3,36,18,0,562,564,5,97,0,0,563,559,1,0,0,0,563,560, + 1,0,0,0,563,561,1,0,0,0,563,562,1,0,0,0,564,111,1,0,0,0,565,567,3,110, + 55,0,566,565,1,0,0,0,567,570,1,0,0,0,568,566,1,0,0,0,568,569,1,0,0,0, + 569,113,1,0,0,0,570,568,1,0,0,0,571,573,3,24,12,0,572,571,1,0,0,0,573, + 576,1,0,0,0,574,575,1,0,0,0,574,572,1,0,0,0,575,577,1,0,0,0,576,574,1, + 0,0,0,577,578,5,75,0,0,578,580,3,52,26,0,579,581,3,72,36,0,580,579,1, + 0,0,0,580,581,1,0,0,0,581,582,1,0,0,0,582,583,5,66,0,0,583,584,3,112, + 56,0,584,585,5,67,0,0,585,115,1,0,0,0,586,594,3,106,53,0,587,594,3,108, + 54,0,588,594,3,36,18,0,589,594,3,38,19,0,590,594,3,40,20,0,591,594,3, + 44,22,0,592,594,5,97,0,0,593,586,1,0,0,0,593,587,1,0,0,0,593,588,1,0, + 0,0,593,589,1,0,0,0,593,590,1,0,0,0,593,591,1,0,0,0,593,592,1,0,0,0,594, + 117,1,0,0,0,595,597,3,116,58,0,596,595,1,0,0,0,597,600,1,0,0,0,598,596, + 1,0,0,0,598,599,1,0,0,0,599,119,1,0,0,0,600,598,1,0,0,0,601,603,3,24, + 12,0,602,601,1,0,0,0,603,606,1,0,0,0,604,605,1,0,0,0,604,602,1,0,0,0, + 605,607,1,0,0,0,606,604,1,0,0,0,607,608,5,76,0,0,608,610,3,52,26,0,609, + 611,3,72,36,0,610,609,1,0,0,0,610,611,1,0,0,0,611,612,1,0,0,0,612,613, + 5,66,0,0,613,614,3,118,59,0,614,615,5,67,0,0,615,121,1,0,0,0,616,619, + 3,106,53,0,617,619,5,97,0,0,618,616,1,0,0,0,618,617,1,0,0,0,619,123,1, + 0,0,0,620,622,3,122,61,0,621,620,1,0,0,0,622,625,1,0,0,0,623,621,1,0, + 0,0,623,624,1,0,0,0,624,125,1,0,0,0,625,623,1,0,0,0,626,627,5,77,0,0, + 627,629,3,52,26,0,628,630,3,72,36,0,629,628,1,0,0,0,629,630,1,0,0,0,630, + 631,1,0,0,0,631,632,5,66,0,0,632,633,3,124,62,0,633,634,5,67,0,0,634, + 127,1,0,0,0,635,636,7,3,0,0,636,129,1,0,0,0,637,638,3,128,64,0,638,639, + 5,63,0,0,639,640,3,62,31,0,640,641,5,60,0,0,641,131,1,0,0,0,642,644,3, + 24,12,0,643,642,1,0,0,0,644,647,1,0,0,0,645,646,1,0,0,0,645,643,1,0,0, + 0,646,648,1,0,0,0,647,645,1,0,0,0,648,649,5,80,0,0,649,650,3,66,33,0, + 650,651,3,52,26,0,651,652,5,60,0,0,652,133,1,0,0,0,653,657,3,130,65,0, + 654,657,3,132,66,0,655,657,5,97,0,0,656,653,1,0,0,0,656,654,1,0,0,0,656, + 655,1,0,0,0,657,135,1,0,0,0,658,660,3,134,67,0,659,658,1,0,0,0,660,663, + 1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,0,662,137,1,0,0,0,663,661,1,0,0, + 0,664,665,5,79,0,0,665,666,3,52,26,0,666,667,5,66,0,0,667,668,3,136,68, + 0,668,669,5,67,0,0,669,139,1,0,0,0,670,676,3,106,53,0,671,676,3,108,54, + 0,672,676,3,36,18,0,673,676,3,138,69,0,674,676,5,97,0,0,675,670,1,0,0, + 0,675,671,1,0,0,0,675,672,1,0,0,0,675,673,1,0,0,0,675,674,1,0,0,0,676, + 141,1,0,0,0,677,679,3,140,70,0,678,677,1,0,0,0,679,682,1,0,0,0,680,678, + 1,0,0,0,680,681,1,0,0,0,681,143,1,0,0,0,682,680,1,0,0,0,683,685,3,24, + 12,0,684,683,1,0,0,0,685,688,1,0,0,0,686,687,1,0,0,0,686,684,1,0,0,0, + 687,689,1,0,0,0,688,686,1,0,0,0,689,690,5,78,0,0,690,692,3,52,26,0,691, + 693,3,72,36,0,692,691,1,0,0,0,692,693,1,0,0,0,693,694,1,0,0,0,694,695, + 5,66,0,0,695,696,3,142,71,0,696,697,5,67,0,0,697,145,1,0,0,0,698,702, + 3,108,54,0,699,702,5,97,0,0,700,702,3,44,22,0,701,698,1,0,0,0,701,699, + 1,0,0,0,701,700,1,0,0,0,702,147,1,0,0,0,703,705,3,146,73,0,704,703,1, + 0,0,0,705,708,1,0,0,0,706,704,1,0,0,0,706,707,1,0,0,0,707,149,1,0,0,0, + 708,706,1,0,0,0,709,711,3,24,12,0,710,709,1,0,0,0,711,714,1,0,0,0,712, + 713,1,0,0,0,712,710,1,0,0,0,713,715,1,0,0,0,714,712,1,0,0,0,715,716,5, + 82,0,0,716,718,3,52,26,0,717,719,3,72,36,0,718,717,1,0,0,0,718,719,1, + 0,0,0,719,720,1,0,0,0,720,721,5,66,0,0,721,722,3,148,74,0,722,723,5,67, + 0,0,723,151,1,0,0,0,724,727,3,108,54,0,725,727,5,97,0,0,726,724,1,0,0, + 0,726,725,1,0,0,0,727,153,1,0,0,0,728,730,3,152,76,0,729,728,1,0,0,0, + 730,733,1,0,0,0,731,729,1,0,0,0,731,732,1,0,0,0,732,155,1,0,0,0,733,731, + 1,0,0,0,734,736,3,24,12,0,735,734,1,0,0,0,736,739,1,0,0,0,737,738,1,0, + 0,0,737,735,1,0,0,0,738,740,1,0,0,0,739,737,1,0,0,0,740,741,5,81,0,0, + 741,743,3,52,26,0,742,744,3,72,36,0,743,742,1,0,0,0,743,744,1,0,0,0,744, + 745,1,0,0,0,745,746,5,66,0,0,746,747,3,154,77,0,747,748,5,67,0,0,748, + 157,1,0,0,0,749,751,3,24,12,0,750,749,1,0,0,0,751,754,1,0,0,0,752,753, + 1,0,0,0,752,750,1,0,0,0,753,755,1,0,0,0,754,752,1,0,0,0,755,756,3,66, + 33,0,756,757,3,52,26,0,757,758,5,60,0,0,758,159,1,0,0,0,759,762,3,158, + 79,0,760,762,5,97,0,0,761,759,1,0,0,0,761,760,1,0,0,0,762,161,1,0,0,0, + 763,765,3,160,80,0,764,763,1,0,0,0,765,768,1,0,0,0,766,764,1,0,0,0,766, + 767,1,0,0,0,767,163,1,0,0,0,768,766,1,0,0,0,769,771,3,24,12,0,770,769, + 1,0,0,0,771,774,1,0,0,0,772,773,1,0,0,0,772,770,1,0,0,0,773,775,1,0,0, + 0,774,772,1,0,0,0,775,776,5,84,0,0,776,778,3,52,26,0,777,779,3,72,36, + 0,778,777,1,0,0,0,778,779,1,0,0,0,779,780,1,0,0,0,780,781,5,66,0,0,781, + 782,3,162,81,0,782,783,5,67,0,0,783,165,1,0,0,0,784,786,3,24,12,0,785, + 784,1,0,0,0,786,789,1,0,0,0,787,788,1,0,0,0,787,785,1,0,0,0,788,790,1, + 0,0,0,789,787,1,0,0,0,790,791,5,83,0,0,791,793,3,52,26,0,792,794,3,72, + 36,0,793,792,1,0,0,0,793,794,1,0,0,0,794,795,1,0,0,0,795,796,5,66,0,0, + 796,797,3,162,81,0,797,798,5,67,0,0,798,167,1,0,0,0,799,801,3,24,12,0, + 800,799,1,0,0,0,801,804,1,0,0,0,802,800,1,0,0,0,802,803,1,0,0,0,803,805, + 1,0,0,0,804,802,1,0,0,0,805,806,3,52,26,0,806,807,5,60,0,0,807,810,1, + 0,0,0,808,810,5,97,0,0,809,802,1,0,0,0,809,808,1,0,0,0,810,169,1,0,0, + 0,811,813,3,168,84,0,812,811,1,0,0,0,813,816,1,0,0,0,814,812,1,0,0,0, + 814,815,1,0,0,0,815,171,1,0,0,0,816,814,1,0,0,0,817,818,5,85,0,0,818, + 819,3,52,26,0,819,820,5,66,0,0,820,821,3,170,85,0,821,822,5,67,0,0,822, + 173,1,0,0,0,823,826,3,52,26,0,824,825,5,63,0,0,825,827,3,62,31,0,826, + 824,1,0,0,0,826,827,1,0,0,0,827,828,1,0,0,0,828,829,5,60,0,0,829,175, + 1,0,0,0,830,833,3,174,87,0,831,833,5,97,0,0,832,830,1,0,0,0,832,831,1, + 0,0,0,833,177,1,0,0,0,834,836,3,176,88,0,835,834,1,0,0,0,836,839,1,0, + 0,0,837,835,1,0,0,0,837,838,1,0,0,0,838,179,1,0,0,0,839,837,1,0,0,0,840, + 841,5,91,0,0,841,842,3,52,26,0,842,843,5,66,0,0,843,844,3,178,89,0,844, + 845,5,67,0,0,845,181,1,0,0,0,846,847,7,4,0,0,847,183,1,0,0,0,848,849, + 7,5,0,0,849,185,1,0,0,0,850,851,7,6,0,0,851,187,1,0,0,0,80,203,205,218, + 225,229,234,241,262,270,279,286,292,296,313,320,327,338,351,366,370,373, + 388,394,406,412,426,432,437,443,453,458,467,476,478,487,493,499,516,521, + 538,551,563,568,574,580,593,598,604,610,618,623,629,645,656,661,675,680, + 686,692,701,706,712,718,726,731,737,743,752,761,766,772,778,787,793,802, + 809,814,826,832,837 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -591,100 +605,100 @@ SIGParser::ParseContext* SIGParser::parse() { }); try { enterOuterAlt(_localctx, 1); - setState(199); + setState(205); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 546039777) != 0) { - setState(197); + setState(203); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 0, _ctx)) { case 1: { - setState(182); + setState(188); layout_definition(); break; } case 2: { - setState(183); + setState(189); table_definition(); break; } case 3: { - setState(184); + setState(190); rt_definition(); break; } case 4: { - setState(185); + setState(191); workgraph_pso_definition(); break; } case 5: { - setState(186); + setState(192); compute_pso_definition(); break; } case 6: { - setState(187); + setState(193); graphics_pso_definition(); break; } case 7: { - setState(188); + setState(194); rtx_pso_definition(); break; } case 8: { - setState(189); + setState(195); rtx_pass_definition(); break; } case 9: { - setState(190); + setState(196); rtx_raygen_definition(); break; } case 10: { - setState(191); + setState(197); pass_definition(); break; } case 11: { - setState(192); + setState(198); view_definition(); break; } case 12: { - setState(193); + setState(199); pipeline_definition(); break; } case 13: { - setState(194); + setState(200); enum_definition(); break; } case 14: { - setState(195); + setState(201); const_definition(); break; } case 15: { - setState(196); + setState(202); match(SIGParser::COMMENT); break; } @@ -692,11 +706,11 @@ SIGParser::ParseContext* SIGParser::parse() { default: break; } - setState(201); + setState(207); _errHandler->sync(this); _la = _input->LA(1); } - setState(202); + setState(208); match(SIGParser::EOF); } @@ -765,13 +779,13 @@ SIGParser::Const_definitionContext* SIGParser::const_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(204); + setState(210); match(SIGParser::T__0); - setState(205); + setState(211); name_id(); - setState(206); + setState(212); options_assign(); - setState(207); + setState(213); match(SIGParser::SCOL); } @@ -856,19 +870,19 @@ SIGParser::Bind_optionContext* SIGParser::bind_option() { exitRule(); }); try { - setState(223); + setState(229); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 4, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(212); + setState(218); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 2, _ctx)) { case 1: { - setState(209); + setState(215); owner_id(); - setState(210); + setState(216); match(SIGParser::T__1); break; } @@ -876,17 +890,17 @@ SIGParser::Bind_optionContext* SIGParser::bind_option() { default: break; } - setState(214); + setState(220); flag_value_holder(); - setState(217); + setState(223); _errHandler->sync(this); _la = _input->LA(1); do { - setState(215); + setState(221); match(SIGParser::PIPE); - setState(216); + setState(222); flag_value_holder(); - setState(219); + setState(225); _errHandler->sync(this); _la = _input->LA(1); } while (_la == SIGParser::PIPE); @@ -895,14 +909,14 @@ SIGParser::Bind_optionContext* SIGParser::bind_option() { case 2: { enterOuterAlt(_localctx, 2); - setState(221); + setState(227); raw_value(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(222); + setState(228); cond_expr(); break; } @@ -974,17 +988,17 @@ SIGParser::Cond_exprContext* SIGParser::cond_expr() { }); try { enterOuterAlt(_localctx, 1); - setState(226); + setState(232); _errHandler->sync(this); _la = _input->LA(1); do { - setState(225); + setState(231); cond_term(); - setState(228); + setState(234); _errHandler->sync(this); _la = _input->LA(1); } while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 1188598458039123968) != 0 || (((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 594299229019561984) != 0 || (((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & 1879048391) != 0); } @@ -1060,40 +1074,40 @@ SIGParser::Cond_termContext* SIGParser::cond_term() { exitRule(); }); try { - setState(235); + setState(241); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 6, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(230); + setState(236); qualified_ref(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(231); + setState(237); function_id(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(232); + setState(238); member_ref(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(233); + setState(239); value_id(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(234); + setState(240); cond_op(); break; } @@ -1164,11 +1178,11 @@ SIGParser::Qualified_refContext* SIGParser::qualified_ref() { }); try { enterOuterAlt(_localctx, 1); - setState(237); + setState(243); owner_id(); - setState(238); + setState(244); match(SIGParser::T__1); - setState(239); + setState(245); value_id(); } @@ -1237,11 +1251,11 @@ SIGParser::Member_refContext* SIGParser::member_ref() { }); try { enterOuterAlt(_localctx, 1); - setState(241); + setState(247); name_id(); - setState(242); + setState(248); match(SIGParser::DOT); - setState(243); + setState(249); name_id(); } @@ -1343,10 +1357,10 @@ SIGParser::Cond_opContext* SIGParser::cond_op() { }); try { enterOuterAlt(_localctx, 1); - setState(245); + setState(251); _la = _input->LA(1); - if (!((((_la - 46) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 46)) & 803323) != 0)) { + if (!((((_la - 45) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 45)) & 1589755) != 0)) { _errHandler->recoverInline(this); } else { @@ -1412,7 +1426,7 @@ SIGParser::Flag_value_holderContext* SIGParser::flag_value_holder() { }); try { enterOuterAlt(_localctx, 1); - setState(247); + setState(253); value_id(); } @@ -1473,7 +1487,7 @@ SIGParser::Raw_valueContext* SIGParser::raw_value() { }); try { enterOuterAlt(_localctx, 1); - setState(249); + setState(255); match(SIGParser::RAWEXPR); } @@ -1538,9 +1552,9 @@ SIGParser::Options_assignContext* SIGParser::options_assign() { }); try { enterOuterAlt(_localctx, 1); - setState(251); + setState(257); match(SIGParser::ASSIGN); - setState(252); + setState(258); bind_option(); } @@ -1606,14 +1620,14 @@ SIGParser::OptionContext* SIGParser::option() { }); try { enterOuterAlt(_localctx, 1); - setState(254); + setState(260); name_id(); - setState(256); + setState(262); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::ASSIGN) { - setState(255); + setState(261); options_assign(); } @@ -1688,23 +1702,23 @@ SIGParser::Option_blockContext* SIGParser::option_block() { }); try { enterOuterAlt(_localctx, 1); - setState(258); + setState(264); match(SIGParser::OSBRACE); - setState(259); + setState(265); option(); - setState(264); + setState(270); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__2) { - setState(260); + setState(266); match(SIGParser::T__2); - setState(261); + setState(267); option(); - setState(266); + setState(272); _errHandler->sync(this); _la = _input->LA(1); } - setState(267); + setState(273); match(SIGParser::CSBRACE); } @@ -1765,7 +1779,7 @@ SIGParser::Array_count_idContext* SIGParser::array_count_id() { }); try { enterOuterAlt(_localctx, 1); - setState(269); + setState(275); match(SIGParser::INT_SCALAR); } @@ -1835,17 +1849,17 @@ SIGParser::ArrayContext* SIGParser::array() { }); try { enterOuterAlt(_localctx, 1); - setState(271); + setState(277); match(SIGParser::OSBRACE); - setState(273); + setState(279); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::INT_SCALAR) { - setState(272); + setState(278); array_count_id(); } - setState(275); + setState(281); match(SIGParser::CSBRACE); } @@ -1936,41 +1950,41 @@ SIGParser::Value_declarationContext* SIGParser::value_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(280); + setState(286); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 10, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(277); + setState(283); option_block(); } - setState(282); + setState(288); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 10, _ctx); } - setState(283); + setState(289); type_id(); - setState(284); + setState(290); name_id(); - setState(286); + setState(292); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::OSBRACE) { - setState(285); + setState(291); array(); } - setState(290); + setState(296); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::ASSIGN) { - setState(288); + setState(294); match(SIGParser::ASSIGN); - setState(289); + setState(295); value_id(); } - setState(292); + setState(298); match(SIGParser::SCOL); } @@ -2039,11 +2053,11 @@ SIGParser::Slot_declarationContext* SIGParser::slot_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(294); + setState(300); match(SIGParser::SLOT); - setState(295); + setState(301); name_id(); - setState(296); + setState(302); match(SIGParser::SCOL); } @@ -2116,15 +2130,15 @@ SIGParser::Sampler_declarationContext* SIGParser::sampler_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(298); + setState(304); match(SIGParser::T__3); - setState(299); + setState(305); name_id(); - setState(300); + setState(306); match(SIGParser::ASSIGN); - setState(301); + setState(307); value_id(); - setState(302); + setState(308); match(SIGParser::SCOL); } @@ -2207,33 +2221,33 @@ SIGParser::Define_declarationContext* SIGParser::define_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(307); + setState(313); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 13, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(304); + setState(310); option_block(); } - setState(309); + setState(315); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 13, _ctx); } - setState(310); + setState(316); match(SIGParser::T__4); - setState(311); + setState(317); name_id(); - setState(314); + setState(320); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::ASSIGN) { - setState(312); + setState(318); match(SIGParser::ASSIGN); - setState(313); + setState(319); array_value_ids(); } - setState(316); + setState(322); match(SIGParser::SCOL); } @@ -2311,25 +2325,25 @@ SIGParser::Rtv_formats_declarationContext* SIGParser::rtv_formats_declaration() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(321); + setState(327); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(318); + setState(324); option_block(); } - setState(323); + setState(329); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); } - setState(324); + setState(330); match(SIGParser::T__5); - setState(325); + setState(331); match(SIGParser::ASSIGN); - setState(326); + setState(332); array_value_ids(); - setState(327); + setState(333); match(SIGParser::SCOL); } @@ -2407,25 +2421,25 @@ SIGParser::Blends_declarationContext* SIGParser::blends_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(332); + setState(338); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 16, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(329); + setState(335); option_block(); } - setState(334); + setState(340); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 16, _ctx); } - setState(335); + setState(341); match(SIGParser::T__6); - setState(336); + setState(342); match(SIGParser::ASSIGN); - setState(337); + setState(343); array_value_ids(); - setState(338); + setState(344); match(SIGParser::SCOL); } @@ -2486,7 +2500,7 @@ SIGParser::PointerContext* SIGParser::pointer() { }); try { enterOuterAlt(_localctx, 1); - setState(340); + setState(346); match(SIGParser::POINTER); } @@ -2568,25 +2582,25 @@ SIGParser::Pso_paramContext* SIGParser::pso_param() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(345); + setState(351); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(342); + setState(348); option_block(); } - setState(347); + setState(353); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); } - setState(348); + setState(354); pso_param_id(); - setState(349); + setState(355); match(SIGParser::ASSIGN); - setState(350); + setState(356); value_id(); - setState(351); + setState(357); match(SIGParser::SCOL); } @@ -2647,7 +2661,7 @@ SIGParser::Class_no_templateContext* SIGParser::class_no_template() { }); try { enterOuterAlt(_localctx, 1); - setState(353); + setState(359); match(SIGParser::ID); } @@ -2729,34 +2743,34 @@ SIGParser::Type_with_templateContext* SIGParser::type_with_template() { }); try { enterOuterAlt(_localctx, 1); - setState(355); + setState(361); class_no_template(); - setState(364); + setState(370); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::LT) { - setState(356); + setState(362); match(SIGParser::LT); - setState(360); + setState(366); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::ID) { - setState(357); + setState(363); template_id(); - setState(362); + setState(368); _errHandler->sync(this); _la = _input->LA(1); } - setState(363); + setState(369); match(SIGParser::GT); } - setState(367); + setState(373); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::POINTER) { - setState(366); + setState(372); pointer(); } @@ -2818,7 +2832,7 @@ SIGParser::Inherit_idContext* SIGParser::inherit_id() { }); try { enterOuterAlt(_localctx, 1); - setState(369); + setState(375); match(SIGParser::ID); } @@ -2879,7 +2893,7 @@ SIGParser::Name_idContext* SIGParser::name_id() { }); try { enterOuterAlt(_localctx, 1); - setState(371); + setState(377); match(SIGParser::ID); } @@ -2940,7 +2954,7 @@ SIGParser::Option_idContext* SIGParser::option_id() { }); try { enterOuterAlt(_localctx, 1); - setState(373); + setState(379); match(SIGParser::ID); } @@ -3001,7 +3015,7 @@ SIGParser::Owner_idContext* SIGParser::owner_id() { }); try { enterOuterAlt(_localctx, 1); - setState(375); + setState(381); match(SIGParser::ID); } @@ -3062,7 +3076,7 @@ SIGParser::Template_idContext* SIGParser::template_id() { }); try { enterOuterAlt(_localctx, 1); - setState(377); + setState(383); match(SIGParser::ID); } @@ -3140,32 +3154,32 @@ SIGParser::Function_idContext* SIGParser::function_id() { }); try { enterOuterAlt(_localctx, 1); - setState(379); + setState(385); match(SIGParser::ID); - setState(380); + setState(386); match(SIGParser::OPAR); - setState(382); + setState(388); _errHandler->sync(this); _la = _input->LA(1); if ((((_la - 70) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 70)) & 29360131) != 0) { - setState(381); + setState(387); value_id_ignore(); } - setState(388); + setState(394); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__2) { - setState(384); + setState(390); match(SIGParser::T__2); - setState(385); + setState(391); value_id_ignore(); - setState(390); + setState(396); _errHandler->sync(this); _la = _input->LA(1); } - setState(391); + setState(397); match(SIGParser::CPAR); } @@ -3249,54 +3263,54 @@ SIGParser::Value_idContext* SIGParser::value_id() { exitRule(); }); try { - setState(400); + setState(406); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 23, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(393); + setState(399); shader_type(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(394); + setState(400); match(SIGParser::ID); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(395); + setState(401); match(SIGParser::INT_SCALAR); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(396); + setState(402); match(SIGParser::FLOAT_SCALAR); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(397); + setState(403); bool_type(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(398); + setState(404); function_id(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(399); + setState(405); array_value_ids(); break; } @@ -3374,26 +3388,26 @@ SIGParser::Value_id_ignoreContext* SIGParser::value_id_ignore() { exitRule(); }); try { - setState(406); + setState(412); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(402); + setState(408); match(SIGParser::ID); break; } case SIGParser::INT_SCALAR: { enterOuterAlt(_localctx, 2); - setState(403); + setState(409); match(SIGParser::INT_SCALAR); break; } case SIGParser::FLOAT_SCALAR: { enterOuterAlt(_localctx, 3); - setState(404); + setState(410); match(SIGParser::FLOAT_SCALAR); break; } @@ -3401,7 +3415,7 @@ SIGParser::Value_id_ignoreContext* SIGParser::value_id_ignore() { case SIGParser::TRUE: case SIGParser::FALSE: { enterOuterAlt(_localctx, 4); - setState(405); + setState(411); bool_type(); break; } @@ -3468,7 +3482,7 @@ SIGParser::Type_idContext* SIGParser::type_id() { }); try { enterOuterAlt(_localctx, 1); - setState(408); + setState(414); type_with_template(); } @@ -3529,7 +3543,7 @@ SIGParser::Insert_blockContext* SIGParser::insert_block() { }); try { enterOuterAlt(_localctx, 1); - setState(410); + setState(416); match(SIGParser::INSERT_BLOCK); } @@ -3595,7 +3609,7 @@ SIGParser::Shader_pathContext* SIGParser::shader_path() { }); try { enterOuterAlt(_localctx, 1); - setState(412); + setState(418); _la = _input->LA(1); if (!(_la == SIGParser::ID @@ -3623,6 +3637,10 @@ SIGParser::InheritContext::InheritContext(ParserRuleContext *parent, size_t invo : ParserRuleContext(parent, invokingState) { } +tree::TerminalNode* SIGParser::InheritContext::COLON() { + return getToken(SIGParser::COLON, 0); +} + std::vector SIGParser::InheritContext::inherit_id() { return getRuleContexts(); } @@ -3670,21 +3688,21 @@ SIGParser::InheritContext* SIGParser::inherit() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(414); - match(SIGParser::T__7); - setState(415); - inherit_id(); setState(420); + match(SIGParser::COLON); + setState(421); + inherit_id(); + setState(426); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(416); + setState(422); match(SIGParser::T__2); - setState(417); + setState(423); inherit_id(); } - setState(422); + setState(428); _errHandler->sync(this); alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); } @@ -3754,26 +3772,26 @@ SIGParser::Layout_statContext* SIGParser::layout_stat() { exitRule(); }); try { - setState(426); + setState(432); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::SLOT: { enterOuterAlt(_localctx, 1); - setState(423); + setState(429); slot_declaration(); break; } case SIGParser::T__3: { enterOuterAlt(_localctx, 2); - setState(424); + setState(430); sampler_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(425); + setState(431); match(SIGParser::COMMENT); break; } @@ -3845,15 +3863,15 @@ SIGParser::Layout_blockContext* SIGParser::layout_block() { }); try { enterOuterAlt(_localctx, 1); - setState(431); + setState(437); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__3 || _la == SIGParser::SLOT || _la == SIGParser::COMMENT) { - setState(428); + setState(434); layout_stat(); - setState(433); + setState(439); _errHandler->sync(this); _la = _input->LA(1); } @@ -3868,64 +3886,391 @@ SIGParser::Layout_blockContext* SIGParser::layout_block() { return _localctx; } -//----------------- Layout_definitionContext ------------------------------------------------------------------ +//----------------- Layout_definitionContext ------------------------------------------------------------------ + +SIGParser::Layout_definitionContext::Layout_definitionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* SIGParser::Layout_definitionContext::LAYOUT() { + return getToken(SIGParser::LAYOUT, 0); +} + +SIGParser::Name_idContext* SIGParser::Layout_definitionContext::name_id() { + return getRuleContext(0); +} + +tree::TerminalNode* SIGParser::Layout_definitionContext::OBRACE() { + return getToken(SIGParser::OBRACE, 0); +} + +SIGParser::Layout_blockContext* SIGParser::Layout_definitionContext::layout_block() { + return getRuleContext(0); +} + +tree::TerminalNode* SIGParser::Layout_definitionContext::CBRACE() { + return getToken(SIGParser::CBRACE, 0); +} + +SIGParser::InheritContext* SIGParser::Layout_definitionContext::inherit() { + return getRuleContext(0); +} + + +size_t SIGParser::Layout_definitionContext::getRuleIndex() const { + return SIGParser::RuleLayout_definition; +} + +void SIGParser::Layout_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLayout_definition(this); +} + +void SIGParser::Layout_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLayout_definition(this); +} + + +std::any SIGParser::Layout_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitLayout_definition(this); + else + return visitor->visitChildren(this); +} + +SIGParser::Layout_definitionContext* SIGParser::layout_definition() { + Layout_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 78, SIGParser::RuleLayout_definition); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(440); + match(SIGParser::LAYOUT); + setState(441); + name_id(); + setState(443); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == SIGParser::COLON) { + setState(442); + inherit(); + } + setState(445); + match(SIGParser::OBRACE); + setState(446); + layout_block(); + setState(447); + match(SIGParser::CBRACE); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Table_statContext ------------------------------------------------------------------ + +SIGParser::Table_statContext::Table_statContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +SIGParser::Value_declarationContext* SIGParser::Table_statContext::value_declaration() { + return getRuleContext(0); +} + +SIGParser::Function_definitionContext* SIGParser::Table_statContext::function_definition() { + return getRuleContext(0); +} + +SIGParser::Insert_blockContext* SIGParser::Table_statContext::insert_block() { + return getRuleContext(0); +} + +tree::TerminalNode* SIGParser::Table_statContext::COMMENT() { + return getToken(SIGParser::COMMENT, 0); +} + + +size_t SIGParser::Table_statContext::getRuleIndex() const { + return SIGParser::RuleTable_stat; +} + +void SIGParser::Table_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTable_stat(this); +} + +void SIGParser::Table_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTable_stat(this); +} + + +std::any SIGParser::Table_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTable_stat(this); + else + return visitor->visitChildren(this); +} + +SIGParser::Table_statContext* SIGParser::table_stat() { + Table_statContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 80, SIGParser::RuleTable_stat); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(453); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 29, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(449); + value_declaration(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(450); + function_definition(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(451); + insert_block(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(452); + match(SIGParser::COMMENT); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Function_definitionContext ------------------------------------------------------------------ + +SIGParser::Function_definitionContext::Function_definitionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +SIGParser::Type_idContext* SIGParser::Function_definitionContext::type_id() { + return getRuleContext(0); +} + +SIGParser::Name_idContext* SIGParser::Function_definitionContext::name_id() { + return getRuleContext(0); +} + +tree::TerminalNode* SIGParser::Function_definitionContext::OPAR() { + return getToken(SIGParser::OPAR, 0); +} + +SIGParser::Function_paramsContext* SIGParser::Function_definitionContext::function_params() { + return getRuleContext(0); +} + +tree::TerminalNode* SIGParser::Function_definitionContext::CPAR() { + return getToken(SIGParser::CPAR, 0); +} + +tree::TerminalNode* SIGParser::Function_definitionContext::FUNC_BODY() { + return getToken(SIGParser::FUNC_BODY, 0); +} + +std::vector SIGParser::Function_definitionContext::option_block() { + return getRuleContexts(); +} + +SIGParser::Option_blockContext* SIGParser::Function_definitionContext::option_block(size_t i) { + return getRuleContext(i); +} + +SIGParser::Function_semanticContext* SIGParser::Function_definitionContext::function_semantic() { + return getRuleContext(0); +} + + +size_t SIGParser::Function_definitionContext::getRuleIndex() const { + return SIGParser::RuleFunction_definition; +} + +void SIGParser::Function_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterFunction_definition(this); +} + +void SIGParser::Function_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitFunction_definition(this); +} + + +std::any SIGParser::Function_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitFunction_definition(this); + else + return visitor->visitChildren(this); +} + +SIGParser::Function_definitionContext* SIGParser::function_definition() { + Function_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 82, SIGParser::RuleFunction_definition); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(458); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 30, _ctx); + while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1 + 1) { + setState(455); + option_block(); + } + setState(460); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 30, _ctx); + } + setState(461); + type_id(); + setState(462); + name_id(); + setState(463); + match(SIGParser::OPAR); + setState(464); + function_params(); + setState(465); + match(SIGParser::CPAR); + setState(467); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == SIGParser::COLON) { + setState(466); + function_semantic(); + } + setState(469); + match(SIGParser::FUNC_BODY); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Function_paramsContext ------------------------------------------------------------------ -SIGParser::Layout_definitionContext::Layout_definitionContext(ParserRuleContext *parent, size_t invokingState) +SIGParser::Function_paramsContext::Function_paramsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Layout_definitionContext::LAYOUT() { - return getToken(SIGParser::LAYOUT, 0); +std::vector SIGParser::Function_paramsContext::OPAR() { + return getTokens(SIGParser::OPAR); } -SIGParser::Name_idContext* SIGParser::Layout_definitionContext::name_id() { - return getRuleContext(0); +tree::TerminalNode* SIGParser::Function_paramsContext::OPAR(size_t i) { + return getToken(SIGParser::OPAR, i); } -tree::TerminalNode* SIGParser::Layout_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +std::vector SIGParser::Function_paramsContext::function_params() { + return getRuleContexts(); } -SIGParser::Layout_blockContext* SIGParser::Layout_definitionContext::layout_block() { - return getRuleContext(0); +SIGParser::Function_paramsContext* SIGParser::Function_paramsContext::function_params(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* SIGParser::Layout_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +std::vector SIGParser::Function_paramsContext::CPAR() { + return getTokens(SIGParser::CPAR); } -SIGParser::InheritContext* SIGParser::Layout_definitionContext::inherit() { - return getRuleContext(0); +tree::TerminalNode* SIGParser::Function_paramsContext::CPAR(size_t i) { + return getToken(SIGParser::CPAR, i); } -size_t SIGParser::Layout_definitionContext::getRuleIndex() const { - return SIGParser::RuleLayout_definition; +size_t SIGParser::Function_paramsContext::getRuleIndex() const { + return SIGParser::RuleFunction_params; } -void SIGParser::Layout_definitionContext::enterRule(tree::ParseTreeListener *listener) { +void SIGParser::Function_paramsContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) - parserListener->enterLayout_definition(this); + parserListener->enterFunction_params(this); } -void SIGParser::Layout_definitionContext::exitRule(tree::ParseTreeListener *listener) { +void SIGParser::Function_paramsContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) - parserListener->exitLayout_definition(this); + parserListener->exitFunction_params(this); } -std::any SIGParser::Layout_definitionContext::accept(tree::ParseTreeVisitor *visitor) { +std::any SIGParser::Function_paramsContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitLayout_definition(this); + return parserVisitor->visitFunction_params(this); else return visitor->visitChildren(this); } -SIGParser::Layout_definitionContext* SIGParser::layout_definition() { - Layout_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, SIGParser::RuleLayout_definition); +SIGParser::Function_paramsContext* SIGParser::function_params() { + Function_paramsContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 84, SIGParser::RuleFunction_params); size_t _la = 0; #if __cplusplus > 201703L @@ -3937,24 +4282,147 @@ SIGParser::Layout_definitionContext* SIGParser::layout_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(434); - match(SIGParser::LAYOUT); - setState(435); - name_id(); - setState(437); + setState(478); _errHandler->sync(this); - _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(436); - inherit(); + while (((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & -2) != 0 || (((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & 1099511627773) != 0) { + setState(476); + _errHandler->sync(this); + switch (_input->LA(1)) { + case SIGParser::OPAR: { + setState(471); + match(SIGParser::OPAR); + setState(472); + function_params(); + setState(473); + match(SIGParser::CPAR); + break; + } + + case SIGParser::T__0: + case SIGParser::T__1: + case SIGParser::T__2: + case SIGParser::T__3: + case SIGParser::T__4: + case SIGParser::T__5: + case SIGParser::T__6: + case SIGParser::T__7: + case SIGParser::T__8: + case SIGParser::T__9: + case SIGParser::T__10: + case SIGParser::T__11: + case SIGParser::T__12: + case SIGParser::T__13: + case SIGParser::T__14: + case SIGParser::T__15: + case SIGParser::T__16: + case SIGParser::T__17: + case SIGParser::T__18: + case SIGParser::T__19: + case SIGParser::T__20: + case SIGParser::T__21: + case SIGParser::T__22: + case SIGParser::T__23: + case SIGParser::T__24: + case SIGParser::T__25: + case SIGParser::T__26: + case SIGParser::T__27: + case SIGParser::T__28: + case SIGParser::T__29: + case SIGParser::T__30: + case SIGParser::T__31: + case SIGParser::T__32: + case SIGParser::T__33: + case SIGParser::T__34: + case SIGParser::T__35: + case SIGParser::T__36: + case SIGParser::T__37: + case SIGParser::T__38: + case SIGParser::T__39: + case SIGParser::T__40: + case SIGParser::T__41: + case SIGParser::T__42: + case SIGParser::T__43: + case SIGParser::OR: + case SIGParser::AND: + case SIGParser::PIPE: + case SIGParser::EQ: + case SIGParser::NEQ: + case SIGParser::GT: + case SIGParser::LT: + case SIGParser::GTEQ: + case SIGParser::LTEQ: + case SIGParser::PLUS: + case SIGParser::MINUS: + case SIGParser::DIV: + case SIGParser::MOD: + case SIGParser::POW: + case SIGParser::NOT: + case SIGParser::SCOL: + case SIGParser::COLON: + case SIGParser::DOT: + case SIGParser::ASSIGN: + case SIGParser::OBRACE: + case SIGParser::CBRACE: + case SIGParser::OSBRACE: + case SIGParser::CSBRACE: + case SIGParser::TRUE: + case SIGParser::FALSE: + case SIGParser::LOG: + case SIGParser::LAYOUT: + case SIGParser::STRUCT: + case SIGParser::COMPUTE_PSO: + case SIGParser::GRAPHICS_PSO: + case SIGParser::RAYTRACE_PSO: + case SIGParser::WORKGRAPH_PSO: + case SIGParser::NODE: + case SIGParser::NODE_OUTPUT: + case SIGParser::RAYTRACE_RAYGEN: + case SIGParser::RAYTRACE_PASS: + case SIGParser::PASS: + case SIGParser::VIEW: + case SIGParser::PIPELINE: + case SIGParser::SLOT: + case SIGParser::RT: + case SIGParser::RTV: + case SIGParser::DSV: + case SIGParser::ROOTSIG: + case SIGParser::ENUM: + case SIGParser::ID: + case SIGParser::INT_SCALAR: + case SIGParser::FLOAT_SCALAR: + case SIGParser::STRING: + case SIGParser::RAWEXPR: + case SIGParser::COMMENT: + case SIGParser::SPACE: + case SIGParser::POINTER: + case SIGParser::FUNC_BODY: + case SIGParser::INSERT_START: + case SIGParser::INSERT_END: + case SIGParser::INSERT_BLOCK: { + setState(475); + _la = _input->LA(1); + if (_la == 0 || _la == Token::EOF || (_la == SIGParser::OPAR + + || _la == SIGParser::CPAR)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + break; + } + + default: + throw NoViableAltException(this); + } + setState(480); + _errHandler->sync(this); + _la = _input->LA(1); } - setState(439); - match(SIGParser::OBRACE); - setState(440); - layout_block(); - setState(441); - match(SIGParser::CBRACE); } catch (RecognitionException &e) { @@ -3966,52 +4434,48 @@ SIGParser::Layout_definitionContext* SIGParser::layout_definition() { return _localctx; } -//----------------- Table_statContext ------------------------------------------------------------------ +//----------------- Function_semanticContext ------------------------------------------------------------------ -SIGParser::Table_statContext::Table_statContext(ParserRuleContext *parent, size_t invokingState) +SIGParser::Function_semanticContext::Function_semanticContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Value_declarationContext* SIGParser::Table_statContext::value_declaration() { - return getRuleContext(0); -} - -SIGParser::Insert_blockContext* SIGParser::Table_statContext::insert_block() { - return getRuleContext(0); +tree::TerminalNode* SIGParser::Function_semanticContext::COLON() { + return getToken(SIGParser::COLON, 0); } -tree::TerminalNode* SIGParser::Table_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* SIGParser::Function_semanticContext::ID() { + return getToken(SIGParser::ID, 0); } -size_t SIGParser::Table_statContext::getRuleIndex() const { - return SIGParser::RuleTable_stat; +size_t SIGParser::Function_semanticContext::getRuleIndex() const { + return SIGParser::RuleFunction_semantic; } -void SIGParser::Table_statContext::enterRule(tree::ParseTreeListener *listener) { +void SIGParser::Function_semanticContext::enterRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) - parserListener->enterTable_stat(this); + parserListener->enterFunction_semantic(this); } -void SIGParser::Table_statContext::exitRule(tree::ParseTreeListener *listener) { +void SIGParser::Function_semanticContext::exitRule(tree::ParseTreeListener *listener) { auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) - parserListener->exitTable_stat(this); + parserListener->exitFunction_semantic(this); } -std::any SIGParser::Table_statContext::accept(tree::ParseTreeVisitor *visitor) { +std::any SIGParser::Function_semanticContext::accept(tree::ParseTreeVisitor *visitor) { if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTable_stat(this); + return parserVisitor->visitFunction_semantic(this); else return visitor->visitChildren(this); } -SIGParser::Table_statContext* SIGParser::table_stat() { - Table_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, SIGParser::RuleTable_stat); +SIGParser::Function_semanticContext* SIGParser::function_semantic() { + Function_semanticContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 86, SIGParser::RuleFunction_semantic); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4021,34 +4485,11 @@ SIGParser::Table_statContext* SIGParser::table_stat() { exitRule(); }); try { - setState(446); - _errHandler->sync(this); - switch (_input->LA(1)) { - case SIGParser::OSBRACE: - case SIGParser::ID: { - enterOuterAlt(_localctx, 1); - setState(443); - value_declaration(); - break; - } - - case SIGParser::INSERT_BLOCK: { - enterOuterAlt(_localctx, 2); - setState(444); - insert_block(); - break; - } - - case SIGParser::COMMENT: { - enterOuterAlt(_localctx, 3); - setState(445); - match(SIGParser::COMMENT); - break; - } - - default: - throw NoViableAltException(this); - } + enterOuterAlt(_localctx, 1); + setState(481); + match(SIGParser::COLON); + setState(482); + match(SIGParser::ID); } catch (RecognitionException &e) { @@ -4101,7 +4542,7 @@ std::any SIGParser::Table_blockContext::accept(tree::ParseTreeVisitor *visitor) SIGParser::Table_blockContext* SIGParser::table_block() { Table_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, SIGParser::RuleTable_block); + enterRule(_localctx, 88, SIGParser::RuleTable_block); size_t _la = 0; #if __cplusplus > 201703L @@ -4113,14 +4554,14 @@ SIGParser::Table_blockContext* SIGParser::table_block() { }); try { enterOuterAlt(_localctx, 1); - setState(451); + setState(487); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 68)) & 17733517313) != 0) { - setState(448); + ((1ULL << (_la - 68)) & 34913386497) != 0) { + setState(484); table_stat(); - setState(453); + setState(489); _errHandler->sync(this); _la = _input->LA(1); } @@ -4200,7 +4641,7 @@ std::any SIGParser::Table_definitionContext::accept(tree::ParseTreeVisitor *visi SIGParser::Table_definitionContext* SIGParser::table_definition() { Table_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, SIGParser::RuleTable_definition); + enterRule(_localctx, 90, SIGParser::RuleTable_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -4213,35 +4654,35 @@ SIGParser::Table_definitionContext* SIGParser::table_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(457); + setState(493); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 31, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 35, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(454); + setState(490); option_block(); } - setState(459); + setState(495); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 31, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 35, _ctx); } - setState(460); + setState(496); match(SIGParser::STRUCT); - setState(461); + setState(497); name_id(); - setState(463); + setState(499); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(462); + if (_la == SIGParser::COLON) { + setState(498); inherit(); } - setState(465); + setState(501); match(SIGParser::OBRACE); - setState(466); + setState(502); table_block(); - setState(467); + setState(503); match(SIGParser::CBRACE); } @@ -4299,7 +4740,7 @@ std::any SIGParser::Rt_color_declarationContext::accept(tree::ParseTreeVisitor * SIGParser::Rt_color_declarationContext* SIGParser::rt_color_declaration() { Rt_color_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, SIGParser::RuleRt_color_declaration); + enterRule(_localctx, 92, SIGParser::RuleRt_color_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4310,11 +4751,11 @@ SIGParser::Rt_color_declarationContext* SIGParser::rt_color_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(469); + setState(505); type_id(); - setState(470); + setState(506); name_id(); - setState(471); + setState(507); match(SIGParser::SCOL); } @@ -4372,7 +4813,7 @@ std::any SIGParser::Rt_ds_declarationContext::accept(tree::ParseTreeVisitor *vis SIGParser::Rt_ds_declarationContext* SIGParser::rt_ds_declaration() { Rt_ds_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, SIGParser::RuleRt_ds_declaration); + enterRule(_localctx, 94, SIGParser::RuleRt_ds_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4383,11 +4824,11 @@ SIGParser::Rt_ds_declarationContext* SIGParser::rt_ds_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(473); + setState(509); match(SIGParser::DSV); - setState(474); + setState(510); name_id(); - setState(475); + setState(511); match(SIGParser::SCOL); } @@ -4445,7 +4886,7 @@ std::any SIGParser::Rt_statContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Rt_statContext* SIGParser::rt_stat() { Rt_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, SIGParser::RuleRt_stat); + enterRule(_localctx, 96, SIGParser::RuleRt_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4455,26 +4896,26 @@ SIGParser::Rt_statContext* SIGParser::rt_stat() { exitRule(); }); try { - setState(480); + setState(516); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(477); + setState(513); rt_color_declaration(); break; } case SIGParser::DSV: { enterOuterAlt(_localctx, 2); - setState(478); + setState(514); rt_ds_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(479); + setState(515); match(SIGParser::COMMENT); break; } @@ -4534,7 +4975,7 @@ std::any SIGParser::Rt_blockContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Rt_blockContext* SIGParser::rt_block() { Rt_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, SIGParser::RuleRt_block); + enterRule(_localctx, 98, SIGParser::RuleRt_block); size_t _la = 0; #if __cplusplus > 201703L @@ -4546,14 +4987,14 @@ SIGParser::Rt_blockContext* SIGParser::rt_block() { }); try { enterOuterAlt(_localctx, 1); - setState(485); + setState(521); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 89) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 89)) & 265) != 0) { - setState(482); + setState(518); rt_stat(); - setState(487); + setState(523); _errHandler->sync(this); _la = _input->LA(1); } @@ -4621,7 +5062,7 @@ std::any SIGParser::Rt_definitionContext::accept(tree::ParseTreeVisitor *visitor SIGParser::Rt_definitionContext* SIGParser::rt_definition() { Rt_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, SIGParser::RuleRt_definition); + enterRule(_localctx, 100, SIGParser::RuleRt_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4632,15 +5073,15 @@ SIGParser::Rt_definitionContext* SIGParser::rt_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(488); + setState(524); match(SIGParser::RT); - setState(489); + setState(525); name_id(); - setState(490); + setState(526); match(SIGParser::OBRACE); - setState(491); + setState(527); rt_block(); - setState(492); + setState(528); match(SIGParser::CBRACE); } @@ -4690,7 +5131,7 @@ std::any SIGParser::Array_value_holderContext::accept(tree::ParseTreeVisitor *vi SIGParser::Array_value_holderContext* SIGParser::array_value_holder() { Array_value_holderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, SIGParser::RuleArray_value_holder); + enterRule(_localctx, 102, SIGParser::RuleArray_value_holder); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4701,7 +5142,7 @@ SIGParser::Array_value_holderContext* SIGParser::array_value_holder() { }); try { enterOuterAlt(_localctx, 1); - setState(494); + setState(530); value_id(); } @@ -4763,7 +5204,7 @@ std::any SIGParser::Array_value_idsContext::accept(tree::ParseTreeVisitor *visit SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { Array_value_idsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, SIGParser::RuleArray_value_ids); + enterRule(_localctx, 104, SIGParser::RuleArray_value_ids); size_t _la = 0; #if __cplusplus > 201703L @@ -4775,23 +5216,23 @@ SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { }); try { enterOuterAlt(_localctx, 1); - setState(496); + setState(532); match(SIGParser::OBRACE); - setState(497); + setState(533); array_value_holder(); - setState(502); + setState(538); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::T__2) { - setState(498); + setState(534); match(SIGParser::T__2); - setState(499); + setState(535); array_value_holder(); - setState(504); + setState(540); _errHandler->sync(this); _la = _input->LA(1); } - setState(505); + setState(541); match(SIGParser::CBRACE); } @@ -4853,7 +5294,7 @@ std::any SIGParser::Root_sigContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Root_sigContext* SIGParser::root_sig() { Root_sigContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, SIGParser::RuleRoot_sig); + enterRule(_localctx, 106, SIGParser::RuleRoot_sig); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4864,13 +5305,13 @@ SIGParser::Root_sigContext* SIGParser::root_sig() { }); try { enterOuterAlt(_localctx, 1); - setState(507); + setState(543); match(SIGParser::ROOTSIG); - setState(508); + setState(544); match(SIGParser::ASSIGN); - setState(509); + setState(545); name_id(); - setState(510); + setState(546); match(SIGParser::SCOL); } @@ -4940,7 +5381,7 @@ std::any SIGParser::ShaderContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::ShaderContext* SIGParser::shader() { ShaderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, SIGParser::RuleShader); + enterRule(_localctx, 108, SIGParser::RuleShader); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4952,25 +5393,25 @@ SIGParser::ShaderContext* SIGParser::shader() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(515); + setState(551); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 36, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 40, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(512); + setState(548); option_block(); } - setState(517); + setState(553); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 36, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 40, _ctx); } - setState(518); + setState(554); shader_type(); - setState(519); + setState(555); match(SIGParser::ASSIGN); - setState(520); + setState(556); shader_path(); - setState(521); + setState(557); match(SIGParser::SCOL); } @@ -5032,7 +5473,7 @@ std::any SIGParser::Compute_pso_statContext::accept(tree::ParseTreeVisitor *visi SIGParser::Compute_pso_statContext* SIGParser::compute_pso_stat() { Compute_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, SIGParser::RuleCompute_pso_stat); + enterRule(_localctx, 110, SIGParser::RuleCompute_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5042,33 +5483,33 @@ SIGParser::Compute_pso_statContext* SIGParser::compute_pso_stat() { exitRule(); }); try { - setState(527); + setState(563); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 37, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(523); + setState(559); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(524); + setState(560); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(525); + setState(561); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(526); + setState(562); match(SIGParser::COMMENT); break; } @@ -5128,7 +5569,7 @@ std::any SIGParser::Compute_pso_blockContext::accept(tree::ParseTreeVisitor *vis SIGParser::Compute_pso_blockContext* SIGParser::compute_pso_block() { Compute_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, SIGParser::RuleCompute_pso_block); + enterRule(_localctx, 112, SIGParser::RuleCompute_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5140,15 +5581,15 @@ SIGParser::Compute_pso_blockContext* SIGParser::compute_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(532); + setState(568); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 134201376) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 67100704) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541065217) != 0) { - setState(529); + setState(565); compute_pso_stat(); - setState(534); + setState(570); _errHandler->sync(this); _la = _input->LA(1); } @@ -5228,7 +5669,7 @@ std::any SIGParser::Compute_pso_definitionContext::accept(tree::ParseTreeVisitor SIGParser::Compute_pso_definitionContext* SIGParser::compute_pso_definition() { Compute_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, SIGParser::RuleCompute_pso_definition); + enterRule(_localctx, 114, SIGParser::RuleCompute_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -5241,35 +5682,35 @@ SIGParser::Compute_pso_definitionContext* SIGParser::compute_pso_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(538); + setState(574); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 39, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(535); + setState(571); option_block(); } - setState(540); + setState(576); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 39, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); } - setState(541); + setState(577); match(SIGParser::COMPUTE_PSO); - setState(542); + setState(578); name_id(); - setState(544); + setState(580); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(543); + if (_la == SIGParser::COLON) { + setState(579); inherit(); } - setState(546); + setState(582); match(SIGParser::OBRACE); - setState(547); + setState(583); compute_pso_block(); - setState(548); + setState(584); match(SIGParser::CBRACE); } @@ -5343,7 +5784,7 @@ std::any SIGParser::Graphics_pso_statContext::accept(tree::ParseTreeVisitor *vis SIGParser::Graphics_pso_statContext* SIGParser::graphics_pso_stat() { Graphics_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, SIGParser::RuleGraphics_pso_stat); + enterRule(_localctx, 116, SIGParser::RuleGraphics_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5353,54 +5794,54 @@ SIGParser::Graphics_pso_statContext* SIGParser::graphics_pso_stat() { exitRule(); }); try { - setState(557); + setState(593); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 45, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(550); + setState(586); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(551); + setState(587); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(552); + setState(588); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(553); + setState(589); rtv_formats_declaration(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(554); + setState(590); blends_declaration(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(555); + setState(591); pso_param(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(556); + setState(592); match(SIGParser::COMMENT); break; } @@ -5460,7 +5901,7 @@ std::any SIGParser::Graphics_pso_blockContext::accept(tree::ParseTreeVisitor *vi SIGParser::Graphics_pso_blockContext* SIGParser::graphics_pso_block() { Graphics_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, SIGParser::RuleGraphics_pso_block); + enterRule(_localctx, 118, SIGParser::RuleGraphics_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5472,15 +5913,15 @@ SIGParser::Graphics_pso_blockContext* SIGParser::graphics_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(562); + setState(598); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 70368744161504) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 35184372080864) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541065217) != 0) { - setState(559); + setState(595); graphics_pso_stat(); - setState(564); + setState(600); _errHandler->sync(this); _la = _input->LA(1); } @@ -5560,7 +6001,7 @@ std::any SIGParser::Graphics_pso_definitionContext::accept(tree::ParseTreeVisito SIGParser::Graphics_pso_definitionContext* SIGParser::graphics_pso_definition() { Graphics_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, SIGParser::RuleGraphics_pso_definition); + enterRule(_localctx, 120, SIGParser::RuleGraphics_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -5573,35 +6014,35 @@ SIGParser::Graphics_pso_definitionContext* SIGParser::graphics_pso_definition() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(568); + setState(604); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(565); + setState(601); option_block(); } - setState(570); + setState(606); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); } - setState(571); + setState(607); match(SIGParser::GRAPHICS_PSO); - setState(572); + setState(608); name_id(); - setState(574); + setState(610); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(573); + if (_la == SIGParser::COLON) { + setState(609); inherit(); } - setState(576); + setState(612); match(SIGParser::OBRACE); - setState(577); + setState(613); graphics_pso_block(); - setState(578); + setState(614); match(SIGParser::CBRACE); } @@ -5655,7 +6096,7 @@ std::any SIGParser::Rtx_pso_statContext::accept(tree::ParseTreeVisitor *visitor) SIGParser::Rtx_pso_statContext* SIGParser::rtx_pso_stat() { Rtx_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, SIGParser::RuleRtx_pso_stat); + enterRule(_localctx, 122, SIGParser::RuleRtx_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5665,19 +6106,19 @@ SIGParser::Rtx_pso_statContext* SIGParser::rtx_pso_stat() { exitRule(); }); try { - setState(582); + setState(618); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ROOTSIG: { enterOuterAlt(_localctx, 1); - setState(580); + setState(616); root_sig(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(581); + setState(617); match(SIGParser::COMMENT); break; } @@ -5737,7 +6178,7 @@ std::any SIGParser::Rtx_pso_blockContext::accept(tree::ParseTreeVisitor *visitor SIGParser::Rtx_pso_blockContext* SIGParser::rtx_pso_block() { Rtx_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, SIGParser::RuleRtx_pso_block); + enterRule(_localctx, 124, SIGParser::RuleRtx_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5749,15 +6190,15 @@ SIGParser::Rtx_pso_blockContext* SIGParser::rtx_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(587); + setState(623); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::ROOTSIG || _la == SIGParser::COMMENT) { - setState(584); + setState(620); rtx_pso_stat(); - setState(589); + setState(625); _errHandler->sync(this); _la = _input->LA(1); } @@ -5829,7 +6270,7 @@ std::any SIGParser::Rtx_pso_definitionContext::accept(tree::ParseTreeVisitor *vi SIGParser::Rtx_pso_definitionContext* SIGParser::rtx_pso_definition() { Rtx_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, SIGParser::RuleRtx_pso_definition); + enterRule(_localctx, 126, SIGParser::RuleRtx_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -5841,23 +6282,23 @@ SIGParser::Rtx_pso_definitionContext* SIGParser::rtx_pso_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(590); + setState(626); match(SIGParser::RAYTRACE_PSO); - setState(591); + setState(627); name_id(); - setState(593); + setState(629); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(592); + if (_la == SIGParser::COLON) { + setState(628); inherit(); } - setState(595); + setState(631); match(SIGParser::OBRACE); - setState(596); + setState(632); rtx_pso_block(); - setState(597); + setState(633); match(SIGParser::CBRACE); } @@ -5903,7 +6344,7 @@ std::any SIGParser::Node_param_idContext::accept(tree::ParseTreeVisitor *visitor SIGParser::Node_param_idContext* SIGParser::node_param_id() { Node_param_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, SIGParser::RuleNode_param_id); + enterRule(_localctx, 128, SIGParser::RuleNode_param_id); size_t _la = 0; #if __cplusplus > 201703L @@ -5915,10 +6356,10 @@ SIGParser::Node_param_idContext* SIGParser::node_param_id() { }); try { enterOuterAlt(_localctx, 1); - setState(599); + setState(635); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 15872) != 0)) { + ((1ULL << _la) & 7936) != 0)) { _errHandler->recoverInline(this); } else { @@ -5985,7 +6426,7 @@ std::any SIGParser::Node_paramContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Node_paramContext* SIGParser::node_param() { Node_paramContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, SIGParser::RuleNode_param); + enterRule(_localctx, 130, SIGParser::RuleNode_param); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5996,13 +6437,13 @@ SIGParser::Node_paramContext* SIGParser::node_param() { }); try { enterOuterAlt(_localctx, 1); - setState(601); + setState(637); node_param_id(); - setState(602); + setState(638); match(SIGParser::ASSIGN); - setState(603); + setState(639); value_id(); - setState(604); + setState(640); match(SIGParser::SCOL); } @@ -6072,7 +6513,7 @@ std::any SIGParser::Node_output_declContext::accept(tree::ParseTreeVisitor *visi SIGParser::Node_output_declContext* SIGParser::node_output_decl() { Node_output_declContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, SIGParser::RuleNode_output_decl); + enterRule(_localctx, 132, SIGParser::RuleNode_output_decl); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6084,25 +6525,25 @@ SIGParser::Node_output_declContext* SIGParser::node_output_decl() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(609); + setState(645); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(606); + setState(642); option_block(); } - setState(611); + setState(647); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); } - setState(612); + setState(648); match(SIGParser::NODE_OUTPUT); - setState(613); + setState(649); type_id(); - setState(614); + setState(650); name_id(); - setState(615); + setState(651); match(SIGParser::SCOL); } @@ -6160,7 +6601,7 @@ std::any SIGParser::Node_statContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Node_statContext* SIGParser::node_stat() { Node_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, SIGParser::RuleNode_stat); + enterRule(_localctx, 134, SIGParser::RuleNode_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6170,16 +6611,16 @@ SIGParser::Node_statContext* SIGParser::node_stat() { exitRule(); }); try { - setState(620); + setState(656); _errHandler->sync(this); switch (_input->LA(1)) { + case SIGParser::T__7: case SIGParser::T__8: case SIGParser::T__9: case SIGParser::T__10: - case SIGParser::T__11: - case SIGParser::T__12: { + case SIGParser::T__11: { enterOuterAlt(_localctx, 1); - setState(617); + setState(653); node_param(); break; } @@ -6187,14 +6628,14 @@ SIGParser::Node_statContext* SIGParser::node_stat() { case SIGParser::OSBRACE: case SIGParser::NODE_OUTPUT: { enterOuterAlt(_localctx, 2); - setState(618); + setState(654); node_output_decl(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(619); + setState(655); match(SIGParser::COMMENT); break; } @@ -6254,7 +6695,7 @@ std::any SIGParser::Node_blockContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Node_blockContext* SIGParser::node_block() { Node_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, SIGParser::RuleNode_block); + enterRule(_localctx, 136, SIGParser::RuleNode_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6266,15 +6707,15 @@ SIGParser::Node_blockContext* SIGParser::node_block() { }); try { enterOuterAlt(_localctx, 1); - setState(625); + setState(661); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 15872) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 7936) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 536875009) != 0) { - setState(622); + setState(658); node_stat(); - setState(627); + setState(663); _errHandler->sync(this); _la = _input->LA(1); } @@ -6342,7 +6783,7 @@ std::any SIGParser::Node_definitionContext::accept(tree::ParseTreeVisitor *visit SIGParser::Node_definitionContext* SIGParser::node_definition() { Node_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, SIGParser::RuleNode_definition); + enterRule(_localctx, 138, SIGParser::RuleNode_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6353,15 +6794,15 @@ SIGParser::Node_definitionContext* SIGParser::node_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(628); + setState(664); match(SIGParser::NODE); - setState(629); + setState(665); name_id(); - setState(630); + setState(666); match(SIGParser::OBRACE); - setState(631); + setState(667); node_block(); - setState(632); + setState(668); match(SIGParser::CBRACE); } @@ -6427,7 +6868,7 @@ std::any SIGParser::Workgraph_pso_statContext::accept(tree::ParseTreeVisitor *vi SIGParser::Workgraph_pso_statContext* SIGParser::workgraph_pso_stat() { Workgraph_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, SIGParser::RuleWorkgraph_pso_stat); + enterRule(_localctx, 140, SIGParser::RuleWorkgraph_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6437,40 +6878,40 @@ SIGParser::Workgraph_pso_statContext* SIGParser::workgraph_pso_stat() { exitRule(); }); try { - setState(639); + setState(675); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 51, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 55, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(634); + setState(670); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(635); + setState(671); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(636); + setState(672); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(637); + setState(673); node_definition(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(638); + setState(674); match(SIGParser::COMMENT); break; } @@ -6530,7 +6971,7 @@ std::any SIGParser::Workgraph_pso_blockContext::accept(tree::ParseTreeVisitor *v SIGParser::Workgraph_pso_blockContext* SIGParser::workgraph_pso_block() { Workgraph_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, SIGParser::RuleWorkgraph_pso_block); + enterRule(_localctx, 142, SIGParser::RuleWorkgraph_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6542,15 +6983,15 @@ SIGParser::Workgraph_pso_blockContext* SIGParser::workgraph_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(644); + setState(680); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 134201376) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && + ((1ULL << _la) & 67100704) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541067265) != 0) { - setState(641); + setState(677); workgraph_pso_stat(); - setState(646); + setState(682); _errHandler->sync(this); _la = _input->LA(1); } @@ -6630,7 +7071,7 @@ std::any SIGParser::Workgraph_pso_definitionContext::accept(tree::ParseTreeVisit SIGParser::Workgraph_pso_definitionContext* SIGParser::workgraph_pso_definition() { Workgraph_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, SIGParser::RuleWorkgraph_pso_definition); + enterRule(_localctx, 144, SIGParser::RuleWorkgraph_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -6643,35 +7084,35 @@ SIGParser::Workgraph_pso_definitionContext* SIGParser::workgraph_pso_definition( try { size_t alt; enterOuterAlt(_localctx, 1); - setState(650); + setState(686); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 53, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(647); + setState(683); option_block(); } - setState(652); + setState(688); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 53, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); } - setState(653); + setState(689); match(SIGParser::WORKGRAPH_PSO); - setState(654); + setState(690); name_id(); - setState(656); + setState(692); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(655); + if (_la == SIGParser::COLON) { + setState(691); inherit(); } - setState(658); + setState(694); match(SIGParser::OBRACE); - setState(659); + setState(695); workgraph_pso_block(); - setState(660); + setState(696); match(SIGParser::CBRACE); } @@ -6729,7 +7170,7 @@ std::any SIGParser::Rtx_pass_statContext::accept(tree::ParseTreeVisitor *visitor SIGParser::Rtx_pass_statContext* SIGParser::rtx_pass_stat() { Rtx_pass_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, SIGParser::RuleRtx_pass_stat); + enterRule(_localctx, 146, SIGParser::RuleRtx_pass_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6739,26 +7180,26 @@ SIGParser::Rtx_pass_statContext* SIGParser::rtx_pass_stat() { exitRule(); }); try { - setState(665); + setState(701); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 55, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 59, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(662); + setState(698); shader(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(663); + setState(699); match(SIGParser::COMMENT); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(664); + setState(700); pso_param(); break; } @@ -6818,7 +7259,7 @@ std::any SIGParser::Rtx_pass_blockContext::accept(tree::ParseTreeVisitor *visito SIGParser::Rtx_pass_blockContext* SIGParser::rtx_pass_block() { Rtx_pass_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, SIGParser::RuleRtx_pass_block); + enterRule(_localctx, 148, SIGParser::RuleRtx_pass_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6830,16 +7271,16 @@ SIGParser::Rtx_pass_blockContext* SIGParser::rtx_pass_block() { }); try { enterOuterAlt(_localctx, 1); - setState(670); + setState(706); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 70368744161280) != 0 || _la == SIGParser::OSBRACE + ((1ULL << _la) & 35184372080640) != 0 || _la == SIGParser::OSBRACE || _la == SIGParser::COMMENT) { - setState(667); + setState(703); rtx_pass_stat(); - setState(672); + setState(708); _errHandler->sync(this); _la = _input->LA(1); } @@ -6919,7 +7360,7 @@ std::any SIGParser::Rtx_pass_definitionContext::accept(tree::ParseTreeVisitor *v SIGParser::Rtx_pass_definitionContext* SIGParser::rtx_pass_definition() { Rtx_pass_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, SIGParser::RuleRtx_pass_definition); + enterRule(_localctx, 150, SIGParser::RuleRtx_pass_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -6932,35 +7373,35 @@ SIGParser::Rtx_pass_definitionContext* SIGParser::rtx_pass_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(676); + setState(712); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(673); + setState(709); option_block(); } - setState(678); + setState(714); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); } - setState(679); + setState(715); match(SIGParser::RAYTRACE_PASS); - setState(680); + setState(716); name_id(); - setState(682); + setState(718); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(681); + if (_la == SIGParser::COLON) { + setState(717); inherit(); } - setState(684); + setState(720); match(SIGParser::OBRACE); - setState(685); + setState(721); rtx_pass_block(); - setState(686); + setState(722); match(SIGParser::CBRACE); } @@ -7014,7 +7455,7 @@ std::any SIGParser::Rtx_raygen_statContext::accept(tree::ParseTreeVisitor *visit SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { Rtx_raygen_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, SIGParser::RuleRtx_raygen_stat); + enterRule(_localctx, 152, SIGParser::RuleRtx_raygen_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7024,9 +7465,10 @@ SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { exitRule(); }); try { - setState(690); + setState(726); _errHandler->sync(this); switch (_input->LA(1)) { + case SIGParser::T__12: case SIGParser::T__13: case SIGParser::T__14: case SIGParser::T__15: @@ -7039,17 +7481,16 @@ SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { case SIGParser::T__22: case SIGParser::T__23: case SIGParser::T__24: - case SIGParser::T__25: case SIGParser::OSBRACE: { enterOuterAlt(_localctx, 1); - setState(688); + setState(724); shader(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(689); + setState(725); match(SIGParser::COMMENT); break; } @@ -7109,7 +7550,7 @@ std::any SIGParser::Rtx_raygen_blockContext::accept(tree::ParseTreeVisitor *visi SIGParser::Rtx_raygen_blockContext* SIGParser::rtx_raygen_block() { Rtx_raygen_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, SIGParser::RuleRtx_raygen_block); + enterRule(_localctx, 154, SIGParser::RuleRtx_raygen_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7121,16 +7562,16 @@ SIGParser::Rtx_raygen_blockContext* SIGParser::rtx_raygen_block() { }); try { enterOuterAlt(_localctx, 1); - setState(695); + setState(731); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 134201344) != 0 || _la == SIGParser::OSBRACE + ((1ULL << _la) & 67100672) != 0 || _la == SIGParser::OSBRACE || _la == SIGParser::COMMENT) { - setState(692); + setState(728); rtx_raygen_stat(); - setState(697); + setState(733); _errHandler->sync(this); _la = _input->LA(1); } @@ -7210,7 +7651,7 @@ std::any SIGParser::Rtx_raygen_definitionContext::accept(tree::ParseTreeVisitor SIGParser::Rtx_raygen_definitionContext* SIGParser::rtx_raygen_definition() { Rtx_raygen_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, SIGParser::RuleRtx_raygen_definition); + enterRule(_localctx, 156, SIGParser::RuleRtx_raygen_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7223,35 +7664,35 @@ SIGParser::Rtx_raygen_definitionContext* SIGParser::rtx_raygen_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(701); + setState(737); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(698); + setState(734); option_block(); } - setState(703); + setState(739); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); } - setState(704); + setState(740); match(SIGParser::RAYTRACE_RAYGEN); - setState(705); + setState(741); name_id(); - setState(707); + setState(743); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(706); + if (_la == SIGParser::COLON) { + setState(742); inherit(); } - setState(709); + setState(745); match(SIGParser::OBRACE); - setState(710); + setState(746); rtx_raygen_block(); - setState(711); + setState(747); match(SIGParser::CBRACE); } @@ -7317,7 +7758,7 @@ std::any SIGParser::View_declarationContext::accept(tree::ParseTreeVisitor *visi SIGParser::View_declarationContext* SIGParser::view_declaration() { View_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, SIGParser::RuleView_declaration); + enterRule(_localctx, 158, SIGParser::RuleView_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7329,23 +7770,23 @@ SIGParser::View_declarationContext* SIGParser::view_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(716); + setState(752); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 63, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(713); + setState(749); option_block(); } - setState(718); + setState(754); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 63, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); } - setState(719); + setState(755); type_id(); - setState(720); + setState(756); name_id(); - setState(721); + setState(757); match(SIGParser::SCOL); } @@ -7399,7 +7840,7 @@ std::any SIGParser::View_statContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::View_statContext* SIGParser::view_stat() { View_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, SIGParser::RuleView_stat); + enterRule(_localctx, 160, SIGParser::RuleView_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7409,20 +7850,20 @@ SIGParser::View_statContext* SIGParser::view_stat() { exitRule(); }); try { - setState(725); + setState(761); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::OSBRACE: case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(723); + setState(759); view_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(724); + setState(760); match(SIGParser::COMMENT); break; } @@ -7482,7 +7923,7 @@ std::any SIGParser::View_blockContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::View_blockContext* SIGParser::view_block() { View_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, SIGParser::RuleView_block); + enterRule(_localctx, 162, SIGParser::RuleView_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7494,14 +7935,14 @@ SIGParser::View_blockContext* SIGParser::view_block() { }); try { enterOuterAlt(_localctx, 1); - setState(730); + setState(766); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 553648129) != 0) { - setState(727); + setState(763); view_stat(); - setState(732); + setState(768); _errHandler->sync(this); _la = _input->LA(1); } @@ -7581,7 +8022,7 @@ std::any SIGParser::View_definitionContext::accept(tree::ParseTreeVisitor *visit SIGParser::View_definitionContext* SIGParser::view_definition() { View_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, SIGParser::RuleView_definition); + enterRule(_localctx, 164, SIGParser::RuleView_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7594,35 +8035,35 @@ SIGParser::View_definitionContext* SIGParser::view_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(736); + setState(772); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 66, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(733); + setState(769); option_block(); } - setState(738); + setState(774); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 66, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); } - setState(739); + setState(775); match(SIGParser::VIEW); - setState(740); + setState(776); name_id(); - setState(742); + setState(778); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(741); + if (_la == SIGParser::COLON) { + setState(777); inherit(); } - setState(744); + setState(780); match(SIGParser::OBRACE); - setState(745); + setState(781); view_block(); - setState(746); + setState(782); match(SIGParser::CBRACE); } @@ -7700,7 +8141,7 @@ std::any SIGParser::Pass_definitionContext::accept(tree::ParseTreeVisitor *visit SIGParser::Pass_definitionContext* SIGParser::pass_definition() { Pass_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, SIGParser::RulePass_definition); + enterRule(_localctx, 166, SIGParser::RulePass_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7713,35 +8154,35 @@ SIGParser::Pass_definitionContext* SIGParser::pass_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(751); + setState(787); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(748); + setState(784); option_block(); } - setState(753); + setState(789); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 68, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); } - setState(754); + setState(790); match(SIGParser::PASS); - setState(755); + setState(791); name_id(); - setState(757); + setState(793); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::T__7) { - setState(756); + if (_la == SIGParser::COLON) { + setState(792); inherit(); } - setState(759); + setState(795); match(SIGParser::OBRACE); - setState(760); + setState(796); view_block(); - setState(761); + setState(797); match(SIGParser::CBRACE); } @@ -7807,7 +8248,7 @@ std::any SIGParser::Pipeline_statContext::accept(tree::ParseTreeVisitor *visitor SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { Pipeline_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, SIGParser::RulePipeline_stat); + enterRule(_localctx, 168, SIGParser::RulePipeline_stat); size_t _la = 0; #if __cplusplus > 201703L @@ -7818,32 +8259,32 @@ SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { exitRule(); }); try { - setState(773); + setState(809); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::OSBRACE: case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(766); + setState(802); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::OSBRACE) { - setState(763); + setState(799); option_block(); - setState(768); + setState(804); _errHandler->sync(this); _la = _input->LA(1); } - setState(769); + setState(805); name_id(); - setState(770); + setState(806); match(SIGParser::SCOL); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(772); + setState(808); match(SIGParser::COMMENT); break; } @@ -7903,7 +8344,7 @@ std::any SIGParser::Pipeline_blockContext::accept(tree::ParseTreeVisitor *visito SIGParser::Pipeline_blockContext* SIGParser::pipeline_block() { Pipeline_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, SIGParser::RulePipeline_block); + enterRule(_localctx, 170, SIGParser::RulePipeline_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7915,14 +8356,14 @@ SIGParser::Pipeline_blockContext* SIGParser::pipeline_block() { }); try { enterOuterAlt(_localctx, 1); - setState(778); + setState(814); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 553648129) != 0) { - setState(775); + setState(811); pipeline_stat(); - setState(780); + setState(816); _errHandler->sync(this); _la = _input->LA(1); } @@ -7990,7 +8431,7 @@ std::any SIGParser::Pipeline_definitionContext::accept(tree::ParseTreeVisitor *v SIGParser::Pipeline_definitionContext* SIGParser::pipeline_definition() { Pipeline_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, SIGParser::RulePipeline_definition); + enterRule(_localctx, 172, SIGParser::RulePipeline_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8001,15 +8442,15 @@ SIGParser::Pipeline_definitionContext* SIGParser::pipeline_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(781); + setState(817); match(SIGParser::PIPELINE); - setState(782); + setState(818); name_id(); - setState(783); + setState(819); match(SIGParser::OBRACE); - setState(784); + setState(820); pipeline_block(); - setState(785); + setState(821); match(SIGParser::CBRACE); } @@ -8071,7 +8512,7 @@ std::any SIGParser::Enum_value_declarationContext::accept(tree::ParseTreeVisitor SIGParser::Enum_value_declarationContext* SIGParser::enum_value_declaration() { Enum_value_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, SIGParser::RuleEnum_value_declaration); + enterRule(_localctx, 174, SIGParser::RuleEnum_value_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -8083,19 +8524,19 @@ SIGParser::Enum_value_declarationContext* SIGParser::enum_value_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(787); + setState(823); name_id(); - setState(790); + setState(826); _errHandler->sync(this); _la = _input->LA(1); if (_la == SIGParser::ASSIGN) { - setState(788); + setState(824); match(SIGParser::ASSIGN); - setState(789); + setState(825); value_id(); } - setState(792); + setState(828); match(SIGParser::SCOL); } @@ -8149,7 +8590,7 @@ std::any SIGParser::Enum_statContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Enum_statContext* SIGParser::enum_stat() { Enum_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, SIGParser::RuleEnum_stat); + enterRule(_localctx, 176, SIGParser::RuleEnum_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8159,19 +8600,19 @@ SIGParser::Enum_statContext* SIGParser::enum_stat() { exitRule(); }); try { - setState(796); + setState(832); _errHandler->sync(this); switch (_input->LA(1)) { case SIGParser::ID: { enterOuterAlt(_localctx, 1); - setState(794); + setState(830); enum_value_declaration(); break; } case SIGParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(795); + setState(831); match(SIGParser::COMMENT); break; } @@ -8231,7 +8672,7 @@ std::any SIGParser::Enum_blockContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Enum_blockContext* SIGParser::enum_block() { Enum_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, SIGParser::RuleEnum_block); + enterRule(_localctx, 178, SIGParser::RuleEnum_block); size_t _la = 0; #if __cplusplus > 201703L @@ -8243,15 +8684,15 @@ SIGParser::Enum_blockContext* SIGParser::enum_block() { }); try { enterOuterAlt(_localctx, 1); - setState(801); + setState(837); _errHandler->sync(this); _la = _input->LA(1); while (_la == SIGParser::ID || _la == SIGParser::COMMENT) { - setState(798); + setState(834); enum_stat(); - setState(803); + setState(839); _errHandler->sync(this); _la = _input->LA(1); } @@ -8319,7 +8760,7 @@ std::any SIGParser::Enum_definitionContext::accept(tree::ParseTreeVisitor *visit SIGParser::Enum_definitionContext* SIGParser::enum_definition() { Enum_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, SIGParser::RuleEnum_definition); + enterRule(_localctx, 180, SIGParser::RuleEnum_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8330,15 +8771,15 @@ SIGParser::Enum_definitionContext* SIGParser::enum_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(804); + setState(840); match(SIGParser::ENUM); - setState(805); + setState(841); name_id(); - setState(806); + setState(842); match(SIGParser::OBRACE); - setState(807); + setState(843); enum_block(); - setState(808); + setState(844); match(SIGParser::CBRACE); } @@ -8384,7 +8825,7 @@ std::any SIGParser::Shader_typeContext::accept(tree::ParseTreeVisitor *visitor) SIGParser::Shader_typeContext* SIGParser::shader_type() { Shader_typeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, SIGParser::RuleShader_type); + enterRule(_localctx, 182, SIGParser::RuleShader_type); size_t _la = 0; #if __cplusplus > 201703L @@ -8396,10 +8837,10 @@ SIGParser::Shader_typeContext* SIGParser::shader_type() { }); try { enterOuterAlt(_localctx, 1); - setState(810); + setState(846); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 134201344) != 0)) { + ((1ULL << _la) & 67100672) != 0)) { _errHandler->recoverInline(this); } else { @@ -8450,7 +8891,7 @@ std::any SIGParser::Pso_param_idContext::accept(tree::ParseTreeVisitor *visitor) SIGParser::Pso_param_idContext* SIGParser::pso_param_id() { Pso_param_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, SIGParser::RulePso_param_id); + enterRule(_localctx, 184, SIGParser::RulePso_param_id); size_t _la = 0; #if __cplusplus > 201703L @@ -8462,10 +8903,10 @@ SIGParser::Pso_param_idContext* SIGParser::pso_param_id() { }); try { enterOuterAlt(_localctx, 1); - setState(812); + setState(848); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 70368609959936) != 0)) { + ((1ULL << _la) & 35184304979968) != 0)) { _errHandler->recoverInline(this); } else { @@ -8524,7 +8965,7 @@ std::any SIGParser::Bool_typeContext::accept(tree::ParseTreeVisitor *visitor) { SIGParser::Bool_typeContext* SIGParser::bool_type() { Bool_typeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, SIGParser::RuleBool_type); + enterRule(_localctx, 186, SIGParser::RuleBool_type); size_t _la = 0; #if __cplusplus > 201703L @@ -8536,7 +8977,7 @@ SIGParser::Bool_typeContext* SIGParser::bool_type() { }); try { enterOuterAlt(_localctx, 1); - setState(814); + setState(850); _la = _input->LA(1); if (!(_la == SIGParser::TRUE diff --git a/sources/SIGParser/.antlr/SIGParser.h b/sources/SIGParser/.antlr/SIGParser.h index dd6cedf31..3ddcb1027 100644 --- a/sources/SIGParser/.antlr/SIGParser.h +++ b/sources/SIGParser/.antlr/SIGParser.h @@ -19,16 +19,17 @@ class SIGParser : public antlr4::Parser { T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, - T__44 = 45, OR = 46, AND = 47, PIPE = 48, EQ = 49, NEQ = 50, GT = 51, - LT = 52, GTEQ = 53, LTEQ = 54, PLUS = 55, MINUS = 56, DIV = 57, MOD = 58, - POW = 59, NOT = 60, SCOL = 61, DOT = 62, ASSIGN = 63, OPAR = 64, CPAR = 65, + OR = 45, AND = 46, PIPE = 47, EQ = 48, NEQ = 49, GT = 50, LT = 51, GTEQ = 52, + LTEQ = 53, PLUS = 54, MINUS = 55, DIV = 56, MOD = 57, POW = 58, NOT = 59, + SCOL = 60, COLON = 61, DOT = 62, ASSIGN = 63, OPAR = 64, CPAR = 65, OBRACE = 66, CBRACE = 67, OSBRACE = 68, CSBRACE = 69, TRUE = 70, FALSE = 71, LOG = 72, LAYOUT = 73, STRUCT = 74, COMPUTE_PSO = 75, GRAPHICS_PSO = 76, RAYTRACE_PSO = 77, WORKGRAPH_PSO = 78, NODE = 79, NODE_OUTPUT = 80, RAYTRACE_RAYGEN = 81, RAYTRACE_PASS = 82, PASS = 83, VIEW = 84, PIPELINE = 85, SLOT = 86, RT = 87, RTV = 88, DSV = 89, ROOTSIG = 90, ENUM = 91, ID = 92, INT_SCALAR = 93, FLOAT_SCALAR = 94, STRING = 95, RAWEXPR = 96, COMMENT = 97, - SPACE = 98, POINTER = 99, INSERT_START = 100, INSERT_END = 101, INSERT_BLOCK = 102 + SPACE = 98, POINTER = 99, FUNC_BODY = 100, INSERT_START = 101, INSERT_END = 102, + INSERT_BLOCK = 103 }; enum { @@ -43,23 +44,24 @@ class SIGParser : public antlr4::Parser { RuleTemplate_id = 29, RuleFunction_id = 30, RuleValue_id = 31, RuleValue_id_ignore = 32, RuleType_id = 33, RuleInsert_block = 34, RuleShader_path = 35, RuleInherit = 36, RuleLayout_stat = 37, RuleLayout_block = 38, RuleLayout_definition = 39, - RuleTable_stat = 40, RuleTable_block = 41, RuleTable_definition = 42, - RuleRt_color_declaration = 43, RuleRt_ds_declaration = 44, RuleRt_stat = 45, - RuleRt_block = 46, RuleRt_definition = 47, RuleArray_value_holder = 48, - RuleArray_value_ids = 49, RuleRoot_sig = 50, RuleShader = 51, RuleCompute_pso_stat = 52, - RuleCompute_pso_block = 53, RuleCompute_pso_definition = 54, RuleGraphics_pso_stat = 55, - RuleGraphics_pso_block = 56, RuleGraphics_pso_definition = 57, RuleRtx_pso_stat = 58, - RuleRtx_pso_block = 59, RuleRtx_pso_definition = 60, RuleNode_param_id = 61, - RuleNode_param = 62, RuleNode_output_decl = 63, RuleNode_stat = 64, - RuleNode_block = 65, RuleNode_definition = 66, RuleWorkgraph_pso_stat = 67, - RuleWorkgraph_pso_block = 68, RuleWorkgraph_pso_definition = 69, RuleRtx_pass_stat = 70, - RuleRtx_pass_block = 71, RuleRtx_pass_definition = 72, RuleRtx_raygen_stat = 73, - RuleRtx_raygen_block = 74, RuleRtx_raygen_definition = 75, RuleView_declaration = 76, - RuleView_stat = 77, RuleView_block = 78, RuleView_definition = 79, RulePass_definition = 80, - RulePipeline_stat = 81, RulePipeline_block = 82, RulePipeline_definition = 83, - RuleEnum_value_declaration = 84, RuleEnum_stat = 85, RuleEnum_block = 86, - RuleEnum_definition = 87, RuleShader_type = 88, RulePso_param_id = 89, - RuleBool_type = 90 + RuleTable_stat = 40, RuleFunction_definition = 41, RuleFunction_params = 42, + RuleFunction_semantic = 43, RuleTable_block = 44, RuleTable_definition = 45, + RuleRt_color_declaration = 46, RuleRt_ds_declaration = 47, RuleRt_stat = 48, + RuleRt_block = 49, RuleRt_definition = 50, RuleArray_value_holder = 51, + RuleArray_value_ids = 52, RuleRoot_sig = 53, RuleShader = 54, RuleCompute_pso_stat = 55, + RuleCompute_pso_block = 56, RuleCompute_pso_definition = 57, RuleGraphics_pso_stat = 58, + RuleGraphics_pso_block = 59, RuleGraphics_pso_definition = 60, RuleRtx_pso_stat = 61, + RuleRtx_pso_block = 62, RuleRtx_pso_definition = 63, RuleNode_param_id = 64, + RuleNode_param = 65, RuleNode_output_decl = 66, RuleNode_stat = 67, + RuleNode_block = 68, RuleNode_definition = 69, RuleWorkgraph_pso_stat = 70, + RuleWorkgraph_pso_block = 71, RuleWorkgraph_pso_definition = 72, RuleRtx_pass_stat = 73, + RuleRtx_pass_block = 74, RuleRtx_pass_definition = 75, RuleRtx_raygen_stat = 76, + RuleRtx_raygen_block = 77, RuleRtx_raygen_definition = 78, RuleView_declaration = 79, + RuleView_stat = 80, RuleView_block = 81, RuleView_definition = 82, RulePass_definition = 83, + RulePipeline_stat = 84, RulePipeline_block = 85, RulePipeline_definition = 86, + RuleEnum_value_declaration = 87, RuleEnum_stat = 88, RuleEnum_block = 89, + RuleEnum_definition = 90, RuleShader_type = 91, RulePso_param_id = 92, + RuleBool_type = 93 }; explicit SIGParser(antlr4::TokenStream *input); @@ -120,6 +122,9 @@ class SIGParser : public antlr4::Parser { class Layout_blockContext; class Layout_definitionContext; class Table_statContext; + class Function_definitionContext; + class Function_paramsContext; + class Function_semanticContext; class Table_blockContext; class Table_definitionContext; class Rt_color_declarationContext; @@ -827,6 +832,7 @@ class SIGParser : public antlr4::Parser { public: InheritContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *COLON(); std::vector inherit_id(); Inherit_idContext* inherit_id(size_t i); @@ -897,6 +903,7 @@ class SIGParser : public antlr4::Parser { Table_statContext(antlr4::ParserRuleContext *parent, size_t invokingState); virtual size_t getRuleIndex() const override; Value_declarationContext *value_declaration(); + Function_definitionContext *function_definition(); Insert_blockContext *insert_block(); antlr4::tree::TerminalNode *COMMENT(); @@ -909,6 +916,65 @@ class SIGParser : public antlr4::Parser { Table_statContext* table_stat(); + class Function_definitionContext : public antlr4::ParserRuleContext { + public: + Function_definitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + Type_idContext *type_id(); + Name_idContext *name_id(); + antlr4::tree::TerminalNode *OPAR(); + Function_paramsContext *function_params(); + antlr4::tree::TerminalNode *CPAR(); + antlr4::tree::TerminalNode *FUNC_BODY(); + std::vector option_block(); + Option_blockContext* option_block(size_t i); + Function_semanticContext *function_semantic(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Function_definitionContext* function_definition(); + + class Function_paramsContext : public antlr4::ParserRuleContext { + public: + Function_paramsContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector OPAR(); + antlr4::tree::TerminalNode* OPAR(size_t i); + std::vector function_params(); + Function_paramsContext* function_params(size_t i); + std::vector CPAR(); + antlr4::tree::TerminalNode* CPAR(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Function_paramsContext* function_params(); + + class Function_semanticContext : public antlr4::ParserRuleContext { + public: + Function_semanticContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *COLON(); + antlr4::tree::TerminalNode *ID(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Function_semanticContext* function_semantic(); + class Table_blockContext : public antlr4::ParserRuleContext { public: Table_blockContext(antlr4::ParserRuleContext *parent, size_t invokingState); diff --git a/sources/SIGParser/.antlr/SIGVisitor.h b/sources/SIGParser/.antlr/SIGVisitor.h index 70036e4be..0a1055145 100644 --- a/sources/SIGParser/.antlr/SIGVisitor.h +++ b/sources/SIGParser/.antlr/SIGVisitor.h @@ -101,6 +101,12 @@ class SIGVisitor : public antlr4::tree::AbstractParseTreeVisitor { virtual std::any visitTable_stat(SIGParser::Table_statContext *context) = 0; + virtual std::any visitFunction_definition(SIGParser::Function_definitionContext *context) = 0; + + virtual std::any visitFunction_params(SIGParser::Function_paramsContext *context) = 0; + + virtual std::any visitFunction_semantic(SIGParser::Function_semanticContext *context) = 0; + virtual std::any visitTable_block(SIGParser::Table_blockContext *context) = 0; virtual std::any visitTable_definition(SIGParser::Table_definitionContext *context) = 0; diff --git a/sources/SIGParser/LSP.cpp b/sources/SIGParser/LSP.cpp index 32cd6864a..eb37df537 100644 --- a/sources/SIGParser/LSP.cpp +++ b/sources/SIGParser/LSP.cpp @@ -551,7 +551,7 @@ namespace SourceLocation loc; }; - static constexpr int K_Field = 5, K_Class = 7, K_Module = 9, K_Property = 10, K_Enum = 13, + static constexpr int K_Method = 2, K_Field = 5, K_Class = 7, K_Module = 9, K_Property = 10, K_Enum = 13, K_Keyword = 14, K_File = 17, K_EnumMember = 20, K_Constant = 21, K_Struct = 22; // Declaration keyword -> KNOWN_OPTIONS kind of that declaration. @@ -698,16 +698,16 @@ namespace return depth > 0 ? current : std::pair{}; } - // The first word after the option block(s) at `offset`: what those - // options are attached to. - static std::string word_after_options(const std::string& text, size_t offset) + // Where the declaration that the option block(s) at `offset` belong to + // starts; npos if there is none. + static size_t after_options(const std::string& text, size_t offset) { // While typing, the block at the cursor is usually still unclosed; a // plain find(']') would jump to the next block and read the wrong // declaration. Stop at the end of the line instead. size_t i = text.find_first_of("]\n", offset); if (i == std::string::npos) - return {}; + return std::string::npos; for (++i; i < text.size();) { char c = text[i]; @@ -720,18 +720,25 @@ namespace { size_t end = text.find(']', i); if (end == std::string::npos) - return {}; + return std::string::npos; i = end + 1; } else - { - size_t b = i; - while (i < text.size() && is_ident(text[i])) - ++i; - return text.substr(b, i - b); - } + return i; } - return {}; + return std::string::npos; + } + + // The first word of that declaration. + static std::string word_after_options(const std::string& text, size_t offset) + { + size_t b = after_options(text, offset); + if (b == std::string::npos) + return {}; + size_t e = b; + while (e < text.size() && is_ident(text[e])) + ++e; + return text.substr(b, e - b); } // KNOWN_OPTIONS kind for an option name typed at `offset`. @@ -745,6 +752,14 @@ namespace auto it = DECL_KIND.find(next); return it != DECL_KIND.end() ? it->second : ""; } + if (keyword == "struct") + { + // `ret name(` is a function; a field reaches `;` first. + size_t b = after_options(text, offset); + size_t stop = b == std::string::npos ? std::string::npos : text.find_first_of("(;{}", b); + if (stop != std::string::npos && text[stop] == '(') + return "function"; + } if (auto it = BODY_KIND.find(keyword); it != BODY_KIND.end()) return it->second; @@ -815,6 +830,9 @@ namespace { for (const auto& v : t->values) out.push_back({ v.name, v.get_type(), K_Field, v.name_loc }); + // Functions carry their whole signature as detail. + for (const auto& f : t->functions) + out.push_back({ f.name, f.get_type() + " " + f.name + "(" + f.params + ")", K_Method, f.name_loc }); for (const auto& parent : t->parent) collect_members(parent, out, depth + 1); } @@ -1023,7 +1041,8 @@ namespace out += std::format("\n... {} more", members.size() - 40); break; } - out += "\n" + (m.detail.empty() || m.kind == K_EnumMember ? m.name : m.detail + " " + m.name); + out += "\n" + (m.kind == K_Method ? m.detail + ";" + : m.detail.empty() || m.kind == K_EnumMember ? m.name : m.detail + " " + m.name); } return out; } @@ -1081,12 +1100,21 @@ namespace std::vector members; if (w.separator == ':') collect_members(w.owner, members); - else if ((w.separator == '.' && w.owner == "data") || (w.begin >= 7 && text->compare(w.begin - 7, 7, "exists(") == 0)) - collect_members(enclosing_decl(*text, offset).second, members); + else + collect_members(enclosing_decl(*text, offset).second, members); // data.x, exists(x), and plain names in a struct + // Every match, so all overloads of a function show together. + std::string lines, first_where; for (const auto& m : members) if (m.name == w.text) - return reply(std::format("```\n{}{}\n```\n{}", m.kind == K_EnumMember ? "" : m.detail + " ", m.name, where(m.loc))); + { + lines += (lines.empty() ? "" : "\n") + (m.kind == K_Method ? m.detail + : (m.kind == K_EnumMember ? "" : m.detail + " ") + m.name); + if (first_where.empty()) + first_where = where(m.loc); + } + if (!lines.empty()) + return reply(std::format("```\n{}\n```\n{}", lines, first_where)); for (const auto& s : top_level_symbols()) if (s.name == w.text) @@ -1198,7 +1226,7 @@ namespace continue; size_t ml = m.loc.line - 1, mc = m.loc.column - 1; children += (children.empty() ? "" : ",") + std::format(R"({{"name":"{}","detail":"{}","kind":{},"range":{},"selectionRange":{}}})", - json_escape(m.name), json_escape(m.detail), m.kind == K_EnumMember ? 22 : 8, + json_escape(m.name), json_escape(m.detail), m.kind == K_EnumMember ? 22 : m.kind == K_Method ? 6 : 8, range_json(ml, mc, ml, mc + m.name.size()), range_json(ml, mc, ml, mc + m.name.size())); } @@ -1269,8 +1297,9 @@ namespace ++line; line_start = i + 1; } - else if (c == '#') + else if (c == '#' || (c == '/' && i + 1 < t.size() && t[i + 1] == '/')) { + // # comments in SIG, // comments inside HLSL function bodies. while (i + 1 < t.size() && t[i + 1] != '\n') ++i; } @@ -1353,7 +1382,13 @@ namespace else if (w.begin >= 7 && text->compare(w.begin - 7, 7, "exists(") == 0) collect_members(enclosing_decl(*text, offset).second, candidates); else - candidates = top_level_symbols(); + { + // Innermost scope first: inside a struct, a function body naming + // another member (LogWrite, voxels_per_tile) means that member. + collect_members(enclosing_decl(*text, offset).second, candidates); + auto top = top_level_symbols(); + candidates.insert(candidates.end(), top.begin(), top.end()); + } std::string found = first_located(candidates); return found.empty() ? "null" : found; diff --git a/sources/SIGParser/Parsed.h b/sources/SIGParser/Parsed.h index d3699984c..290c317af 100644 --- a/sources/SIGParser/Parsed.h +++ b/sources/SIGParser/Parsed.h @@ -70,7 +70,8 @@ struct have_name : public virtual parsed_type struct have_hlsl : public virtual parsed_type { - std::string hlsl; + std::string hlsl; // everything pasted into the generated HLSL: %{ }% text and [HLSL] functions + std::string inserted; // only the %{ }% text, for diagnostics; not serialized SourceLocation hlsl_loc; // where the %{ }% block starts; diagnostics only SERIALIZE() @@ -892,8 +893,20 @@ void Layout::recursive_samplers(T f) struct Parsed; +// An HLSL function declared in a struct body. Only the signature is +// understood; `source` is the function exactly as written, pasted into the +// generated HLSL. Not serialized: templates see it through Table::hlsl. +struct Function : public have_name, public have_options, public have_type +{ + std::string params; // parameter list as written, without the parentheses + std::string source; // the whole function from its return type to the closing brace, first-line indentation included + SourceLocation body_loc; // the opening brace +}; + struct Table : public inherited, have_options, have_name, have_hlsl { + std::list functions; + Slot* slot = nullptr; std::string path; std::list values; diff --git a/sources/SIGParser/Parsing.cpp b/sources/SIGParser/Parsing.cpp index e8ff5bd38..c27d2fcbe 100644 --- a/sources/SIGParser/Parsing.cpp +++ b/sources/SIGParser/Parsing.cpp @@ -146,6 +146,45 @@ class TreeShapeListener : public SIGBaseListener setup_map(get_elem().consts); } + ENTER(Function_definition) + { + setup_list(get_elem().functions); + stamp(ctx); + } + + EXIT(Function_definition) + { + auto& fn = get_elem(); + auto* input = ctx->getStart()->getInputStream(); + auto text = [&](size_t a, size_t b) { return input->getText(antlr4::misc::Interval(a, b)); }; + + auto* params = ctx->function_params(); + if (params->getStop() && params->getStop()->getStopIndex() + 1 > params->getStart()->getStartIndex()) + fn.params = text(params->getStart()->getStartIndex(), params->getStop()->getStopIndex()); + + // From the start of the return type's line, so the pasted text keeps the + // indentation its first line was written with. + size_t begin = ctx->type_id()->getStart()->getStartIndex(); + size_t line_start = begin; + while (line_start > 0) + { + std::string prev = text(line_start - 1, line_start - 1); + if (prev != " " && prev != "\t") + break; + --line_start; + } + fn.source = text(line_start, ctx->getStop()->getStopIndex()); + + auto* body = ctx->FUNC_BODY()->getSymbol(); + fn.body_loc = SourceLocation{ file, body->getLine(), body->getCharPositionInLine() + 1 }; + + end_elem(); + + // [HLSL] is the default; a function marked only [CPP] stays out of the shader. + if (!fn.find_option("CPP") || fn.find_option("HLSL")) + get_elem
().hlsl += "\n" + fn.source + "\n"; + } + GENERATE(Slot_declaration) { setup_map(get_elem().slots); @@ -532,7 +571,8 @@ class TreeShapeListener : public SIGBaseListener { auto str = ctx->children[0]->getText(); auto& elem = get_elem(); - elem.hlsl = str.substr(2, str.size() - 4); + elem.hlsl += str.substr(2, str.size() - 4); + elem.inserted = str.substr(2, str.size() - 4); elem.hlsl_loc = SourceLocation{ file, ctx->getStart()->getLine(), ctx->getStart()->getCharPositionInLine() + 1 }; } diff --git a/sources/SIGParser/REFACTOR_TODO.md b/sources/SIGParser/REFACTOR_TODO.md index f39bb89d7..ff0c83e98 100644 --- a/sources/SIGParser/REFACTOR_TODO.md +++ b/sources/SIGParser/REFACTOR_TODO.md @@ -27,6 +27,13 @@ one is reported. Open: 3's remaining checks, 5, 6, 7, most of 8, 9's dropped-field bug. +Also since then: HLSL functions are struct members (`function_definition`, +lexer token `FUNC_BODY`), taking `[options]`. `[HLSL]` is the default, so +they go into the generated HLSL. `[CPP]` (emit into the C++ struct as well) +is designed but not implemented. All former `%{ }%` blocks have been +migrated; `%{ }%` still works. Shader paths are quoted `"dir/file.hlsl"` +strings, checked against workdir/shaders. + --- ## 0. Where things are diff --git a/sources/SIGParser/SIG.g4 b/sources/SIGParser/SIG.g4 index 24c98b752..6f6a2ea70 100644 --- a/sources/SIGParser/SIG.g4 +++ b/sources/SIGParser/SIG.g4 @@ -1,10 +1,37 @@ grammar SIG; -options - { +options + { language = Cpp; } +// FUNC_BODY is only lexable right after a function signature: `)` or +// `) : SEMANTIC`. That position is unambiguous in SIG -- struct/PSO/enum bodies +// follow a name and value lists follow `=` -- so the lexer can decide it alone +// by remembering the last few tokens, without splitting this into separate +// lexer/parser grammars for a lexical mode. +@lexer::members { + size_t last_types[3] = { 0, 0, 0 }; + + bool at_function_body() const + { + return last_types[0] == CPAR + || (last_types[0] == ID && last_types[1] == COLON && last_types[2] == CPAR); + } + + std::unique_ptr nextToken() override + { + auto token = antlr4::Lexer::nextToken(); + if (token->getChannel() == antlr4::Token::DEFAULT_CHANNEL) + { + last_types[2] = last_types[1]; + last_types[1] = last_types[0]; + last_types[0] = token->getType(); + } + return token; + } +} + parse : (layout_definition|table_definition|rt_definition|workgraph_pso_definition|compute_pso_definition|graphics_pso_definition|rtx_pso_definition|rtx_pass_definition|rtx_raygen_definition|pass_definition|view_definition|pipeline_definition|enum_definition|const_definition|COMMENT)* EOF ; @@ -160,10 +187,27 @@ layout_definition table_stat : value_declaration + | function_definition | insert_block | COMMENT ; + +// An HLSL function member: `[options] ret name(params) : SEMANTIC { body }`. +// The body is one opaque FUNC_BODY token and the parameters are kept as source +// text; SIG only needs the signature to know the function exists. Emitted into +// the struct's generated HLSL by default ([HLSL]). +function_definition + : option_block*? type_id name_id OPAR function_params CPAR function_semantic? FUNC_BODY + ; + +function_params + : ( OPAR function_params CPAR | ~( OPAR | CPAR ) )* + ; + +function_semantic + : COLON ID + ; table_block : table_stat* @@ -332,6 +376,7 @@ POW : '^'; NOT : '!'; SCOL : ';'; +COLON : ':'; // Longest-match lexing keeps FLOAT_SCALAR ('1.5', '.5') intact -- DOT only ever // wins for a '.' that isn't part of a number, which is exactly member_ref. DOT : '.'; @@ -445,6 +490,23 @@ SPACE '*' ; +// The predicate sits after the '{', not at the rule's left edge: a left-edge +// predicate takes part in every token's start decision, which stops the lexer +// caching DFA states and made lexing ~30x slower (0.03s -> 0.95s per full +// revalidation). Here it only affects the decision at a '{'. +FUNC_BODY + : '{' {at_function_body()}? FUNC_BLOCK_TAIL + ; + +// Balanced braces, skipping braces inside HLSL comments and string literals. +fragment FUNC_BLOCK + : '{' FUNC_BLOCK_TAIL + ; + +fragment FUNC_BLOCK_TAIL + : ( FUNC_BLOCK | '//' ~[\r\n]* | '/*' .*? '*/' | '"' ( ~["\\\r\n] | '\\' . )* '"' | ~[{}/"] | '/' )* '}' + ; + INSERT_START: '%{'; INSERT_END: '}%'; INSERT_BLOCK diff --git a/sources/SIGParser/Validate.cpp b/sources/SIGParser/Validate.cpp index 1af9e0ef8..c8a567abf 100644 --- a/sources/SIGParser/Validate.cpp +++ b/sources/SIGParser/Validate.cpp @@ -23,6 +23,8 @@ namespace { "struct", { "Bind", "IndirectCommand", "RenderTarget", "nobind", "raypayload", "serialize", "shader_only", "Template" } }, { "struct field", { "Auto", "Barrier", "DispatchSize", "dynamic", "read", "write", "Write" /* unread */ } }, + // [HLSL] is also the default; [CPP] (emit into the C++ struct) is not implemented yet. + { "function", { "HLSL" } }, { "layout", {} }, { "slot", {} }, { "render target", {} }, @@ -312,14 +314,15 @@ namespace return false; } - // %{ }% is pasted into HLSL verbatim, so a `# note` written out of .sig - // habit becomes an invalid preprocessor directive. Without this the error - // surfaces only when the engine compiles the shader at load time. - void check_hlsl_block(const have_hlsl& holder, const std::string& owner_name) + // %{ }% blocks and function bodies are pasted into HLSL verbatim, so a + // `# note` written out of .sig habit becomes an invalid preprocessor + // directive. Without this the error surfaces only when the engine compiles + // the shader at load time. + void check_hlsl_text(const std::string& text, const SourceLocation& start, const std::string& owner_name) { - std::istringstream lines(holder.hlsl); + std::istringstream lines(text); std::string line; - size_t line_no = holder.hlsl_loc.line; // the block text starts right after '%{' on this line + size_t line_no = start.line; // the text starts on this line for (; std::getline(lines, line); ++line_no) { @@ -332,8 +335,8 @@ namespace } if (trimmed.starts_with('#') && !is_preprocessor_directive(trimmed)) - diagnostics().error(SourceLocation{ holder.hlsl_loc.file, line_no, indent + 1 }, - std::format("'{}': %{{ }}% is raw HLSL, so this '#' line is an invalid preprocessor directive; use // for comments", + diagnostics().error(SourceLocation{ start.file, line_no, indent + 1 }, + std::format("'{}': this is HLSL, so a '#' line is a preprocessor directive, and this one is invalid; use // for comments", owner_name)); } } @@ -437,7 +440,12 @@ void validate(Parsed& parsed) check_options(table, "struct", table.name); for (const auto& v : table.values) check_options(v, "struct field", table.name + "." + v.name); - check_hlsl_block(table, table.name); + check_hlsl_text(table.inserted, table.hlsl_loc, table.name); + for (const auto& f : table.functions) + { + check_options(f, "function", table.name + "." + f.name); + check_hlsl_text(f.source.substr(f.source.find('{')), f.body_loc, table.name + "." + f.name); + } } for (const auto& layout : parsed.layouts) diff --git a/sources/SIGParser/editor/SigCommands.vsct b/sources/SIGParser/editor/SigCommands.vsct new file mode 100644 index 000000000..55c81d498 --- /dev/null +++ b/sources/SIGParser/editor/SigCommands.vsct @@ -0,0 +1,61 @@ + + + + + + + + + + + + DefaultDocked + + SIG + SIG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sources/SIGParser/editor/SigPackage.cs b/sources/SIGParser/editor/SigPackage.cs new file mode 100644 index 000000000..b17ae8b6e --- /dev/null +++ b/sources/SIGParser/editor/SigPackage.cs @@ -0,0 +1,239 @@ +// Tools > Regenerate SIG code (also on the SIG toolbar). Compiled into +// SigLanguageClient.dll by gen_vs_extension.py, which also writes this +// package's registration into sig.pkgdef -- there is no RegPkg step. +using System; +using System.Collections.Generic; +using System.ComponentModel.Design; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using EnvDTE; +using EnvDTE80; +using Microsoft.VisualStudio.Shell; +using Microsoft.VisualStudio.Shell.Interop; +using Task = System.Threading.Tasks.Task; + +namespace Spectrum.Sig +{ + [Guid(PackageGuid)] + public sealed class SigPackage : AsyncPackage + { + // Must match guidSigPackage / guidSigCmdSet in SigCommands.vsct. + public const string PackageGuid = "ffdc10aa-ef2c-4958-b04a-0472de298aaa"; + static readonly Guid CommandSet = new Guid("922623a0-3f03-48f5-baa7-9e37559a407f"); + const int RegenerateId = 0x0100; + + static readonly Guid PaneGuid = new Guid("5d0e5b1e-7c1a-4f6b-9f5e-2a3c9d1b7e41"); + + // Generator output folders, relative to the repo root: what the summary diffs. + static readonly string[] OutputDirs = + { + @"sources\HAL\autogen", @"sources\RenderSystem\FrameGraph\autogen", @"workdir\shaders\autogen", + }; + static readonly string[] OutputFiles = { @"workdir\shaders\enums.h" }; + + bool running; + + protected override async Task InitializeAsync(CancellationToken token, IProgress progress) + { + await JoinableTaskFactory.SwitchToMainThreadAsync(token); + var commands = (OleMenuCommandService)await GetServiceAsync(typeof(IMenuCommandService)); + var command = new OleMenuCommand((s, e) => JoinableTaskFactory.RunAsync(RegenerateAsync).FileAndForget("sig/regenerate"), + new CommandID(CommandSet, RegenerateId)); + command.BeforeQueryStatus += (s, e) => command.Enabled = !running; + commands.AddCommand(command); + } + + async Task RegenerateAsync() + { + await JoinableTaskFactory.SwitchToMainThreadAsync(); + var dte = (DTE2)await GetServiceAsync(typeof(DTE)); + IVsOutputWindowPane pane = GetPane(); + pane.Clear(); + pane.Activate(); + + // The generator reads .sig files from disk. + foreach (Document doc in dte.Documents) + if (!doc.Saved && doc.FullName.EndsWith(".sig", StringComparison.OrdinalIgnoreCase)) + doc.Save(); + + string repo = FindRepo(dte); + if (repo == null) + { + pane.OutputStringThreadSafe("Could not find sources\\SIGParser\\sigs above the solution or the active document.\n"); + ShowMessage("Could not find the Spectrum checkout (sources\\SIGParser\\sigs) for this solution.", OLEMSGICON.OLEMSGICON_WARNING); + return; + } + + string sigDir = Path.Combine(repo, "sources", "SIGParser"); + string exe = PickGenerator(repo); + pane.OutputStringThreadSafe($"Generator: {exe}\nWorking directory: {sigDir}\n\n"); + SetStatus("Regenerating SIG code..."); + + Dictionary before, after; + int exitCode; + string output; + running = true; + try + { + before = Snapshot(repo); + (exitCode, output) = await Task.Run(() => Run(exe, "", sigDir)); + after = Snapshot(repo); + } + catch (Exception e) + { + await JoinableTaskFactory.SwitchToMainThreadAsync(); + pane.OutputStringThreadSafe($"Could not run the generator: {e.Message}\n"); + SetStatus("SIG generation could not start."); + return; + } + finally + { + running = false; + } + + await JoinableTaskFactory.SwitchToMainThreadAsync(); + pane.OutputStringThreadSafe(output); + + if (exitCode != 0) + { + int errors = output.Split('\n').Count(l => l.Contains(": error:")); + string what = errors > 0 ? $"{errors} error(s) in .sig files" : $"exit code {exitCode}"; + SetStatus($"SIG generation failed: {what}; nothing was written."); + ShowMessage($"SIG generation failed ({what}); nothing was written.\n\nDetails are in the Output window, \"SIG\" pane.", + OLEMSGICON.OLEMSGICON_CRITICAL); + return; + } + + var added = after.Keys.Where(k => !before.ContainsKey(k)).OrderBy(k => k).ToList(); + var removed = before.Keys.Where(k => !after.ContainsKey(k)).OrderBy(k => k).ToList(); + var modified = after.Keys.Where(k => before.TryGetValue(k, out var b) && b != after[k]).OrderBy(k => k).ToList(); + + var summary = new StringBuilder(); + summary.Append($"\nSIG regenerated: {modified.Count} modified, {added.Count} added, {removed.Count} removed.\n"); + foreach (var f in added) summary.Append(" + " + f + "\n"); + foreach (var f in removed) summary.Append(" - " + f + "\n"); + foreach (var f in modified) summary.Append(" M " + f + "\n"); + pane.OutputStringThreadSafe(summary.ToString()); + SetStatus($"SIG regenerated: {modified.Count} modified, {added.Count} added, {removed.Count} removed."); + + // A new or deleted generated file is invisible to the build until + // the Sharpmake projects are regenerated. + if (added.Count + removed.Count > 0) + { + string bat = Path.Combine(repo, "generate_project.bat"); + int answer = ShowMessage($"The generated file set changed ({added.Count} added, {removed.Count} removed).\n\n" + + "Run generate_project.bat now? Visual Studio will then offer to reload the projects.", + OLEMSGICON.OLEMSGICON_QUERY, OLEMSGBUTTON.OLEMSGBUTTON_YESNO); + if (answer == 6 /* IDYES */ && File.Exists(bat)) + { + pane.OutputStringThreadSafe("\nRunning generate_project.bat...\n"); + var (code, log) = await Task.Run(() => Run(Environment.ExpandEnvironmentVariables("%ComSpec%"), $"/c \"{bat}\"", repo)); + await JoinableTaskFactory.SwitchToMainThreadAsync(); + pane.OutputStringThreadSafe(log + $"\ngenerate_project.bat exited with {code}.\n"); + } + } + } + + // The checkout the solution (or, failing that, the active document) is in. + static string FindRepo(DTE2 dte) + { + var starts = new List(); + if (!string.IsNullOrEmpty(dte.Solution?.FullName)) + starts.Add(Path.GetDirectoryName(dte.Solution.FullName)); + if (dte.ActiveDocument != null) + starts.Add(Path.GetDirectoryName(dte.ActiveDocument.FullName)); + + foreach (string start in starts) + for (var dir = new DirectoryInfo(start); dir != null; dir = dir.Parent) + if (Directory.Exists(Path.Combine(dir.FullName, "sources", "SIGParser", "sigs"))) + return dir.FullName; + return null; + } + + // The repo's own Profile build when it is newer than the copy bundled + // with the extension: generator changes then apply without reinstalling. + static string PickGenerator(string repo) + { + string bundled = Path.Combine(Path.GetDirectoryName(typeof(SigPackage).Assembly.Location), "server", "sigparser.exe"); + string local = Path.Combine(repo, "bin", "profile", "sigparser.exe"); + if (!File.Exists(local)) return bundled; + if (!File.Exists(bundled)) return local; + return File.GetLastWriteTimeUtc(local) > File.GetLastWriteTimeUtc(bundled) ? local : bundled; + } + + // Size + write time per file. The generator only rewrites files whose + // content changed, so this is enough to tell modified from untouched. + static Dictionary Snapshot(string repo) + { + var result = new Dictionary(StringComparer.OrdinalIgnoreCase); + void add(string path) + { + var info = new FileInfo(path); + result[path.Substring(repo.Length + 1)] = info.Length + "/" + info.LastWriteTimeUtc.Ticks; + } + foreach (string dir in OutputDirs) + { + string full = Path.Combine(repo, dir); + if (Directory.Exists(full)) + foreach (string f in Directory.EnumerateFiles(full, "*", SearchOption.AllDirectories)) + add(f); + } + foreach (string f in OutputFiles) + if (File.Exists(Path.Combine(repo, f))) + add(Path.Combine(repo, f)); + return result; + } + + static (int, string) Run(string exe, string args, string cwd) + { + var info = new ProcessStartInfo(exe, args) + { + WorkingDirectory = cwd, + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardOutput = true, + RedirectStandardError = true, + }; + var output = new StringBuilder(); + using (var process = new System.Diagnostics.Process { StartInfo = info }) + { + process.OutputDataReceived += (s, e) => { if (e.Data != null) lock (output) output.AppendLine(e.Data); }; + process.ErrorDataReceived += (s, e) => { if (e.Data != null) lock (output) output.AppendLine(e.Data); }; + process.Start(); + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + process.WaitForExit(); + return (process.ExitCode, output.ToString()); + } + } + + IVsOutputWindowPane GetPane() + { + ThreadHelper.ThrowIfNotOnUIThread(); + var window = (IVsOutputWindow)GetService(typeof(SVsOutputWindow)); + Guid guid = PaneGuid; + if (window.GetPane(ref guid, out IVsOutputWindowPane pane) != 0 || pane == null) + { + window.CreatePane(ref guid, "SIG", 1, 1); + window.GetPane(ref guid, out pane); + } + return pane; + } + + void SetStatus(string text) + { + ThreadHelper.ThrowIfNotOnUIThread(); + (GetService(typeof(SVsStatusbar)) as IVsStatusbar)?.SetText(text); + } + + int ShowMessage(string text, OLEMSGICON icon, OLEMSGBUTTON buttons = OLEMSGBUTTON.OLEMSGBUTTON_OK) + { + return VsShellUtilities.ShowMessageBox(this, text, "SIG", icon, buttons, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); + } + } +} diff --git a/sources/SIGParser/editor/gen_vs_extension.py b/sources/SIGParser/editor/gen_vs_extension.py index 0b5763ba2..18cfd2b02 100644 --- a/sources/SIGParser/editor/gen_vs_extension.py +++ b/sources/SIGParser/editor/gen_vs_extension.py @@ -74,7 +74,9 @@ "int16_t", "uint16_t", "int32_t", "uint32_t", "int64_t", "uint64_t", "float16_t", "float32_t", "float64_t", ] -BUILTIN_KEYWORD_TYPES = ["matrix", "vector", "unorm", "snorm", "mat4x4"] # mat4x4: detect_type +BUILTIN_KEYWORD_TYPES = ["matrix", "vector", "unorm", "snorm", "mat4x4", # mat4x4: detect_type + # HLSL function signatures + "void", "in", "out", "inout", "const", "static", "inline", "uniform"] BUILTIN_RESOURCES = [ # HLSL "Texture1D", "Texture1DArray", "Texture2D", "Texture2DArray", "Texture2DMS", "Texture2DMSArray", @@ -158,6 +160,16 @@ def split_rules(text): text = re.sub(r"^\s*grammar\s+\w+\s*;", "", text, flags=re.M) text = re.sub(r"options\s*\{[^}]*\}", "", text) + # @lexer::members { C++ } and similar named actions: code, not rules. + while (m := re.search(r"@\w+(?:::\w+)?\s*\{", text)): + depth, k = 1, m.end() + while k < len(text) and depth: + depth += {"{": 1, "}": -1}.get(text[k], 0) + k += 1 + text = text[:m.start()] + text[k:] + # Inline {predicate}? and {action} blocks inside rules. + text = re.sub(r"\{[^{}']*\}\??", "", text) + rules, i, n = {}, 0, len(text) while i < n: m = re.compile(r"\s*([A-Za-z_]\w*)\s*:").match(text, i) @@ -505,8 +517,32 @@ def build_grammar(rules, a): repo["values"] = {"patterns": [{"include": "#" + p} for p in values + ["qualified"] + kw + ["function", "identifier", "operator"]]} + # An HLSL function member: `ret name(params) : SEMANTIC { body }`. Begins + # zero-width at such a line so the return type and name keep their own + # colours; ends right after the body's closing brace. The body is C++ (the + # closest shipped grammar to HLSL); nested braces are tracked here rather + # than trusted to it, and the leading \s* on the end is the same fix as %{ }%. + ob_re, cb_re = re_escape(ob), re_escape(cb) + repo["function_braces"] = {"begin": ob_re, "end": cb_re, + "patterns": [{"include": "#function_braces"}, {"include": "source.cpp"}]} + repo["function_body"] = { + "name": "meta.embedded.block.hlsl.sig", "begin": ob_re, "end": r"\s*" + cb_re, + "beginCaptures": {"0": {"name": "punctuation.section.embedded.begin.sig"}}, + "endCaptures": {"0": {"name": "punctuation.section.embedded.end.sig"}}, + "contentName": "meta.embedded.cpp.sig", + "patterns": [{"include": "#function_braces"}, {"include": "source.cpp"}], + } + repo["function_definition"] = { + "begin": r"^\s*(?=" + ident + r"(?:\s*<[^>]*>)?\s+" + ident + r"\s*\()", + "end": r"(?<=" + cb_re + ")", + "patterns": [{"include": "#comment"}, {"include": "#function_body"}] + + [{"include": "#" + k} for k in kw] + + [{"include": "#function"}, {"include": "#float_scalar"}, {"include": "#int_scalar"}, + {"include": "#identifier"}, {"include": "#operator"}], + } + # Keywords and built-in types before `function`, so `uint2(` stays a type. - top = token_patterns + ["option_block", "declaration", "qualified"] + kw + ["function", "identifier", "operator"] + top = token_patterns + ["option_block", "function_definition", "declaration", "qualified"] + kw + ["function", "identifier", "operator"] return { "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", @@ -557,25 +593,61 @@ def build_theme(): VS_ROOT = r"C:\Program Files\Microsoft Visual Studio\18\Community" SERVER_EXE = os.path.normpath(os.path.join(HERE, "..", "..", "..", "bin", "profile", "sigparser.exe")) -CLIENT_SOURCE = os.path.join(HERE, "SigLanguageClient.cs") +CLIENT_SOURCES = [os.path.join(HERE, "SigLanguageClient.cs"), os.path.join(HERE, "SigPackage.cs")] +COMMANDS_VSCT = os.path.join(HERE, "SigCommands.vsct") +VSSDK = os.path.join(VS_ROOT, r"VSSDK\VisualStudioIntegration") + +# Must match SigPackage.PackageGuid / guidSigPackage in SigCommands.vsct. +PACKAGE_GUID = "{ffdc10aa-ef2c-4958-b04a-0472de298aaa}" + + +def compile_commands(out_dir): + """SigCommands.vsct -> .cto, the binary menu resource VS loads. Needs the + VS Installer's "Visual Studio extension development" workload.""" + vsct = os.path.join(VSSDK, r"Tools\Bin\VSCT.exe") + if not os.path.exists(vsct): + sys.exit(f"missing {vsct}: install the 'Visual Studio extension development' workload") + cto = os.path.join(out_dir, "SigCommands.cto") + subprocess.run([vsct, COMMANDS_VSCT, cto, "-I" + os.path.join(VSSDK, r"Common\Inc")], + check=True, stdout=subprocess.DEVNULL) + + # VS reads the menu table as the entry "Menus.ctmenu" of one of the + # package assembly's .resources sets -- what the VSSDK's MergeWithCTO + # produces. Embedding the .cto as a plain manifest resource of that name + # fails with "Resource not found: Menus.ctmenu" in ActivityLog and no menu. + resources = os.path.join(out_dir, "SigLanguageClient.VSPackage.resources") + script = ("$w = New-Object System.Resources.ResourceWriter('{0}'); " + "$w.AddResource('Menus.ctmenu', [IO.File]::ReadAllBytes('{1}')); $w.Generate(); $w.Close()" + ).format(resources.replace("'", "''"), cto.replace("'", "''")) + subprocess.run(["powershell", "-NoProfile", "-NonInteractive", "-Command", script], check=True) + return resources def compile_client(out_dir): ide = os.path.join(VS_ROOT, "Common7", "IDE") ref = r"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8" refs = [ - os.path.join(ref, n) for n in ("mscorlib.dll", "System.dll", "System.Core.dll", + os.path.join(ref, n) for n in ("mscorlib.dll", "System.dll", "System.Core.dll", "System.Design.dll", "System.ComponentModel.Composition.dll", r"Facades\netstandard.dll", r"Facades\System.Runtime.dll", r"Facades\System.Threading.Tasks.dll") ] + [ os.path.join(ide, r"CommonExtensions\Microsoft\LanguageServer\Microsoft.VisualStudio.LanguageServer.Client.dll"), os.path.join(ide, r"CommonExtensions\Microsoft\Editor\Microsoft.VisualStudio.CoreUtility.dll"), os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Threading.17.x\Microsoft.VisualStudio.Threading.dll"), + # SigPackage: the command, output pane, status bar and DTE. + os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Shell.15.0.dll"), + os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Shell.Framework.dll"), + os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Interop.dll"), + os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.dll"), + os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.OLE.Interop.dll"), + os.path.join(ide, r"PublicAssemblies\envdte.dll"), + os.path.join(ide, r"PublicAssemblies\envdte80.dll"), ] out = os.path.join(out_dir, "SigLanguageClient.dll") csc = os.path.join(VS_ROOT, r"MSBuild\Current\Bin\Roslyn\csc.exe") # CS0067: StopAsync is required by ILanguageClient but never raised. - cmd = [csc, "-nologo", "-noconfig", "-nostdlib", "-target:library", "-nowarn:67", "-out:" + out, CLIENT_SOURCE] + cmd = [csc, "-nologo", "-noconfig", "-nostdlib", "-target:library", "-nowarn:67", "-out:" + out, + "-resource:" + compile_commands(out_dir) + ",SigLanguageClient.VSPackage.resources"] + CLIENT_SOURCES cmd += ["-r:" + r for r in refs] subprocess.run(cmd, check=True) return out @@ -601,6 +673,7 @@ def dll_closure(exe): def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): + menu_version = int(time.time()) // 60 % 2_000_000_000 pkgdef = ( "// Generated by gen_vs_extension.py\r\n" "[$RootKey$\\TextMate\\Repositories]\r\n" @@ -608,6 +681,24 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): "\r\n" "[$RootKey$\\TextMate\\LanguageConfiguration\\GrammarMapping]\r\n" f"\"{SCOPE}\"=\"$PackageFolder$\\language-configuration.json\"\r\n" + "\r\n" + # SigPackage: what the VSSDK's RegPkg would otherwise write from its attributes. + f"[$RootKey$\\Packages\\{PACKAGE_GUID}]\r\n" + "@=\"Spectrum.Sig.SigPackage\"\r\n" + "\"InprocServer32\"=\"$WinDir$\\SYSTEM32\\MSCOREE.DLL\"\r\n" + "\"Class\"=\"Spectrum.Sig.SigPackage\"\r\n" + "\"CodeBase\"=\"$PackageFolder$\\SigLanguageClient.dll\"\r\n" + "\"AllowsBackgroundLoad\"=dword:00000001\r\n" + "\r\n" + f"[$RootKey$\\BindingPaths\\{PACKAGE_GUID}]\r\n" + "\"$PackageFolder$\"=\"\"\r\n" + "\r\n" + # The last field is the menu resource version. VS caches merged menus + # and re-merges an updated extension's reliably only when it changes, + # so every build gets a new one; a fixed 1 left an upgraded install + # showing no command at all. + "[$RootKey$\\Menus]\r\n" + f"\"{PACKAGE_GUID}\"=\", Menus.ctmenu, {menu_version}\"\r\n" ) manifest = f""" diff --git a/sources/SIGParser/sigs/FrameData.sig b/sources/SIGParser/sigs/FrameData.sig index f2d1cee69..242794927 100644 --- a/sources/SIGParser/sigs/FrameData.sig +++ b/sources/SIGParser/sigs/FrameData.sig @@ -81,39 +81,35 @@ struct FrameInfo uint debugFlags = 0; - %{ - float2 IntegrateBRDF(float Roughness, float Metallic, float NoV) - { - return GetBrdf().SampleLevel(linearClampSampler, float3(Roughness, Metallic, 0.5 + 0.5 * NoV), 0); - } - - - half3 compress_normals(inout half3 vNormal) - { - // renormalize (needed only if any blending or interpolation happened before) - vNormal.rgb = normalize(vNormal.rgb); - // get unsigned normal for the cubemap lookup - half3 vNormalUns = abs(vNormal.rgb); - // get the main axis for cubemap lookup - half maxNAbs = max(vNormalUns.z, max(vNormalUns.x, vNormalUns.y)); - // get texture coordinates in a collapsed cubemap - float2 vTexCoord = vNormalUns.z probes; - %{ - uint3 ddgi_probe_grid_coord(uint linear_index, uint3 probe_counts) { uint3 coord; @@ -260,48 +258,48 @@ struct DDGIProbes return probe_grid_coord.x + probe_grid_coord.y * probe_counts.x + probe_grid_coord.z * probe_counts.x * probe_counts.y; } - // Non-negative modulo (HLSL/C++ % can return negative results for a - // negative dividend) -- the building block every wrap/toroidal lookup - // below needs, since a probe's cell coordinate relative to some origin - // is routinely negative (a corner one cell below the window's own - // origin, or a slot minus the window's origin when the slot is "before" - // it in wrapped space). + # Non-negative modulo (HLSL/C++ % can return negative results for a + # negative dividend) -- the building block every wrap/toroidal lookup + # below needs, since a probe's cell coordinate relative to some origin + # is routinely negative (a corner one cell below the window's own + # origin, or a slot minus the window's origin when the slot is "before" + # it in wrapped space). int3 ddgi_wrap(int3 v, uint3 counts) { int3 c = int3(counts); return ((v % c) + c) % c; } - // Toroidal (ring-buffer) addressing (see [[project-ddgi]] planning - // notes): the grid recenters on the camera every frame by snapping - // grid_min to the nearest whole probe-spacing step (ddgi_make_info, - // DDGIGraph.cpp), but a probe's ATLAS SLOT (its grid_coord within - // [0, probe_counts)) is a fixed, unchanging function of its own - // absolute world-cell position -- NOT of grid_min. Two world cells - // exactly probe_counts apart alias to the same slot, which is safe - // precisely because grid_min/probe_counts/spacing together bound the - // cascade's current working volume to one such cell per residue class - // (ddgi_sample_irradiance_cascaded's own margin check already enforces - // this precondition, unchanged by this file). - // - // Given grid_min is always an exact multiple of spacing (by - // construction), window_origin = round(grid_min / spacing) is the - // window's own minimum corner in integer probe-cell units -- the one - // piece of state every wrap/unwrap direction below is built from. + # Toroidal (ring-buffer) addressing (see [[project-ddgi]] planning + # notes): the grid recenters on the camera every frame by snapping + # grid_min to the nearest whole probe-spacing step (ddgi_make_info, + # DDGIGraph.cpp), but a probe's ATLAS SLOT (its grid_coord within + # [0, probe_counts)) is a fixed, unchanging function of its own + # absolute world-cell position -- NOT of grid_min. Two world cells + # exactly probe_counts apart alias to the same slot, which is safe + # precisely because grid_min/probe_counts/spacing together bound the + # cascade's current working volume to one such cell per residue class + # (ddgi_sample_irradiance_cascaded's own margin check already enforces + # this precondition, unchanged by this file). + # + # Given grid_min is always an exact multiple of spacing (by + # construction), window_origin = round(grid_min / spacing) is the + # window's own minimum corner in integer probe-cell units -- the one + # piece of state every wrap/unwrap direction below is built from. int3 ddgi_window_origin(float3 grid_min, float3 spacing) { return int3(round(grid_min / spacing)); } - // slot -> world position. `probe_grid_coord` is a bare atlas slot with - // no known relation to any particular world cell (DDGIProbeTrace's own - // dispatch-derived slot, or an 8-corner sample offset already wrapped - // into a valid slot by the caller) -- recovers the UNIQUE absolute - // world-cell in [window_origin, window_origin+probe_counts) that - // currently maps to it. Reduces to the old direct `grid_min + - // coord*spacing` when the grid has never scrolled (window_origin's own - // wrap of a slot already in range is a no-op), so this is a strict - // superset of the pre-toroidal behavior, not a special case of it. + # slot -> world position. `probe_grid_coord` is a bare atlas slot with + # no known relation to any particular world cell (DDGIProbeTrace's own + # dispatch-derived slot, or an 8-corner sample offset already wrapped + # into a valid slot by the caller) -- recovers the UNIQUE absolute + # world-cell in [window_origin, window_origin+probe_counts) that + # currently maps to it. Reduces to the old direct `grid_min + + # coord*spacing` when the grid has never scrolled (window_origin's own + # wrap of a slot already in range is a no-op), so this is a strict + # superset of the pre-toroidal behavior, not a special case of it. float3 ddgi_probe_world_pos(uint3 probe_grid_coord, float3 grid_min, float3 probe_spacing, float3 probe_offset, uint3 probe_counts) { int3 window_origin = ddgi_window_origin(grid_min, probe_spacing); @@ -309,27 +307,27 @@ struct DDGIProbes return float3(absolute_cell) * probe_spacing + probe_offset; } - // world position -> atlas slot. Pure function of the world cell alone - // (no grid_min/window_origin involved) -- this is what makes a probe's - // slot assignment independent of how far the window has scrolled, the - // entire point of toroidal addressing. Only valid for a world_pos - // already known to fall within the cascade's current working volume - // (ddgi_sample_irradiance_cascaded's own margin check, or a hit point a - // caller has already cascade-selected) -- outside that volume this - // still returns SOME slot (wrapping never fails), it just may not be - // the slot the caller actually meant. + # world position -> atlas slot. Pure function of the world cell alone + # (no grid_min/window_origin involved) -- this is what makes a probe's + # slot assignment independent of how far the window has scrolled, the + # entire point of toroidal addressing. Only valid for a world_pos + # already known to fall within the cascade's current working volume + # (ddgi_sample_irradiance_cascaded's own margin check, or a hit point a + # caller has already cascade-selected) -- outside that volume this + # still returns SOME slot (wrapping never fails), it just may not be + # the slot the caller actually meant. uint3 ddgi_world_to_slot(float3 world_pos, float3 probe_spacing, uint3 probe_counts) { int3 absolute_cell = int3(floor(world_pos / probe_spacing)); return uint3(ddgi_wrap(absolute_cell, probe_counts)); } - // Texel-space origin (top-left corner) of a probe's cell within the 2D - // (x,z) plane of any of the DDGI_Probe*/atlas array textures -- probe_y - // doesn't participate here at all, it's an array-slice offset instead - // (ddgi_atlas_array_slice, below). All three atlas textures share this - // same plane layout, so one helper serves radiance, irradiance and - // visibility lookups alike. + # Texel-space origin (top-left corner) of a probe's cell within the 2D + # (x,z) plane of any of the DDGI_Probe*/atlas array textures -- probe_y + # doesn't participate here at all, it's an array-slice offset instead + # (ddgi_atlas_array_slice, below). All three atlas textures share this + # same plane layout, so one helper serves radiance, irradiance and + # visibility lookups alike. uint2 ddgi_atlas_origin(uint3 probe_grid_coord, uint texel_size) { uint2 origin; @@ -338,12 +336,12 @@ struct DDGIProbes return origin; } - // Inverse of ddgi_atlas_origin: which probe (x,z) a given atlas-plane - // texel belongs to. probe_grid_coord.y is NOT recovered here -- callers - // that dispatch per-cascade already know their own probe.y directly - // (the dispatch's own 3rd dimension, or ddgi_atlas_array_slice's - // inverse below when only an array slice is in hand), so it's passed in - // rather than re-derived. + # Inverse of ddgi_atlas_origin: which probe (x,z) a given atlas-plane + # texel belongs to. probe_grid_coord.y is NOT recovered here -- callers + # that dispatch per-cascade already know their own probe.y directly + # (the dispatch's own 3rd dimension, or ddgi_atlas_array_slice's + # inverse below when only an array slice is in hand), so it's passed in + # rather than re-derived. uint3 ddgi_atlas_probe_coord(uint2 atlas_texel, uint texel_size, uint probe_grid_y) { uint2 cell = atlas_texel / texel_size; @@ -354,11 +352,11 @@ struct DDGIProbes return coord; } - // Which array slice of the shared, DDGI_AtlasArraySlices-deep atlas - // array a probe's own (probe_y, cascade) pair lives in -- this cascade's - // own DDGIInfo::cascade_info.y (precomputed in C++, ddgi_make_info) is - // its slice range's own start, so this is just that plus the probe's - // local y. Inverse (slice -> probe_y) is `slice - cascade_slice_offset`. + # Which array slice of the shared, DDGI_AtlasArraySlices-deep atlas + # array a probe's own (probe_y, cascade) pair lives in -- this cascade's + # own DDGIInfo::cascade_info.y (precomputed in C++, ddgi_make_info) is + # its slice range's own start, so this is just that plus the probe's + # local y. Inverse (slice -> probe_y) is `slice - cascade_slice_offset`. uint ddgi_atlas_array_slice(uint probe_grid_y, uint cascade_slice_offset) { return cascade_slice_offset + probe_grid_y; @@ -369,8 +367,6 @@ struct DDGIProbes uint2 local = atlas_texel % texel_size; return (float2(local) + 0.5) / float(texel_size) * 2.0 - 1.0; } - - }% } # Per-frame snapshot of DDGI's own GUI toggles (DDGIGraph.cpp's own diff --git a/sources/SIGParser/sigs/defaultlayout.sig b/sources/SIGParser/sigs/defaultlayout.sig index 9023c4af3..cd7ae51b9 100644 --- a/sources/SIGParser/sigs/defaultlayout.sig +++ b/sources/SIGParser/sigs/defaultlayout.sig @@ -61,25 +61,23 @@ struct DebugInfo RWStructuredBuffer debug; RWStructuredBuffer logCount; - %{ - void LogWrite(uint id, uint4 args) - { - uint slot; - InterlockedAdd(GetLogCount()[0], 1, slot); + void LogWrite(uint id, uint4 args) + { + uint slot; + InterlockedAdd(GetLogCount()[0], 1, slot); - if (slot < 64) - { - DebugStruct e; - e.format_id = id; - e.args = args; - GetDebug()[slot] = e; - } + if (slot < 64) + { + DebugStruct e; + e.format_id = id; + e.args = args; + GetDebug()[slot] = e; } + } - void Log(uint id) { LogWrite(id, uint4(0, 0, 0, 0)); } - void Log(uint id, uint a0) { LogWrite(id, uint4(a0, 0, 0, 0)); } - void Log(uint id, uint a0, uint a1) { LogWrite(id, uint4(a0, a1, 0, 0)); } - void Log(uint id, uint a0, uint a1, uint a2) { LogWrite(id, uint4(a0, a1, a2, 0)); } - void Log(uint id, uint a0, uint a1, uint a2, uint a3) { LogWrite(id, uint4(a0, a1, a2, a3)); } - }% + void Log(uint id) { LogWrite(id, uint4(0, 0, 0, 0)); } + void Log(uint id, uint a0) { LogWrite(id, uint4(a0, 0, 0, 0)); } + void Log(uint id, uint a0, uint a1) { LogWrite(id, uint4(a0, a1, 0, 0)); } + void Log(uint id, uint a0, uint a1, uint a2) { LogWrite(id, uint4(a0, a1, a2, 0)); } + void Log(uint id, uint a0, uint a1, uint a2, uint a3) { LogWrite(id, uint4(a0, a1, a2, a3)); } } diff --git a/sources/SIGParser/sigs/raytracing.sig b/sources/SIGParser/sigs/raytracing.sig index 535488aea..03b62dcd5 100644 --- a/sources/SIGParser/sigs/raytracing.sig +++ b/sources/SIGParser/sigs/raytracing.sig @@ -129,17 +129,14 @@ struct RayCone [write = {anyhit,closesthit,miss,caller}] float angle; - %{ RayCone propagate(float surfaceSpreadAngle = 0, float hitT = 0) { RayCone result; result.width = width + angle* hitT; result.angle = angle + surfaceSpreadAngle; - + return result; } - - }% } [nobind] @@ -195,8 +192,6 @@ struct RayPayload [write = {anyhit,closesthit,miss,caller}] uint use_vsm_shadow; - %{ - RayPayload propagate(float surfaceSpreadAngle = 0, float hitT = 0) { RayPayload result; @@ -227,8 +222,6 @@ struct RayPayload cone.width = 0; use_vsm_shadow = 0; } - - }% } [nobind] @@ -271,18 +264,16 @@ struct Triangle float lod; - %{ - void init(mesh_vertex_input vertex0, mesh_vertex_input vertex1, mesh_vertex_input vertex2, float3 barycentrics) - { - v.normal = (vertex0.normal * barycentrics.x + vertex1.normal * barycentrics.y + vertex2.normal * barycentrics.z); - v.tc = vertex0.tc * barycentrics.x + vertex1.tc * barycentrics.y + vertex2.tc * barycentrics.z; + void init(mesh_vertex_input vertex0, mesh_vertex_input vertex1, mesh_vertex_input vertex2, float3 barycentrics) + { + v.normal = (vertex0.normal * barycentrics.x + vertex1.normal * barycentrics.y + vertex2.normal * barycentrics.z); + v.tc = vertex0.tc * barycentrics.x + vertex1.tc * barycentrics.y + vertex2.tc * barycentrics.z; - float P_a = length(cross(vertex2.pos - vertex0.pos, vertex1.pos - vertex0.pos)); - float T_a = length(cross(float3(vertex2.tc - vertex0.tc,0), float3(vertex1.tc - vertex0.tc,0 ))); - lod = 0.5 * log2(T_a / P_a); + float P_a = length(cross(vertex2.pos - vertex0.pos, vertex1.pos - vertex0.pos)); + float T_a = length(cross(float3(vertex2.tc - vertex0.tc,0), float3(vertex1.tc - vertex0.tc,0 ))); + lod = 0.5 * log2(T_a / P_a); - } - }% + } } diff --git a/sources/SIGParser/sigs/voxel.sig b/sources/SIGParser/sigs/voxel.sig index ee3ccf940..baa95b335 100644 --- a/sources/SIGParser/sigs/voxel.sig +++ b/sources/SIGParser/sigs/voxel.sig @@ -3,19 +3,15 @@ struct VoxelTilingParams uint4 voxels_per_tile; StructuredBuffer tiles; - %{ - -uint3 get_voxel_pos(uint3 dispatchID) -{ - uint tile_index = dispatchID.x / voxels_per_tile.x; - uint3 tile_pos = GetTiles()[tile_index] * voxels_per_tile.xyz; - - uint3 tile_local_pos = dispatchID - int3(tile_index * voxels_per_tile.x, 0, 0); - uint3 index = tile_pos + tile_local_pos; - return index; -} - - }% + uint3 get_voxel_pos(uint3 dispatchID) + { + uint tile_index = dispatchID.x / voxels_per_tile.x; + uint3 tile_pos = GetTiles()[tile_index] * voxels_per_tile.xyz; + + uint3 tile_local_pos = dispatchID - int3(tile_index * voxels_per_tile.x, 0, 0); + uint3 index = tile_pos + tile_local_pos; + return index; + } } [Bind = DefaultLayout::Instance0] diff --git a/workdir/shaders/autogen/tables/DDGIProbes.h b/workdir/shaders/autogen/tables/DDGIProbes.h index e3b6048d2..1d2ea0876 100644 --- a/workdir/shaders/autogen/tables/DDGIProbes.h +++ b/workdir/shaders/autogen/tables/DDGIProbes.h @@ -14,7 +14,6 @@ struct DDGIProbes uint probes; // RWStructuredBuffer uint4 GetProbe_counts() { return probe_counts; } RWStructuredBuffer GetProbes() { return ResourceDescriptorHeap[probes]; } - uint3 ddgi_probe_grid_coord(uint linear_index, uint3 probe_counts) { uint3 coord; @@ -29,48 +28,17 @@ struct DDGIProbes return probe_grid_coord.x + probe_grid_coord.y * probe_counts.x + probe_grid_coord.z * probe_counts.x * probe_counts.y; } - // Non-negative modulo (HLSL/C++ % can return negative results for a - // negative dividend) -- the building block every wrap/toroidal lookup - // below needs, since a probe's cell coordinate relative to some origin - // is routinely negative (a corner one cell below the window's own - // origin, or a slot minus the window's origin when the slot is "before" - // it in wrapped space). int3 ddgi_wrap(int3 v, uint3 counts) { int3 c = int3(counts); return ((v % c) + c) % c; } - // Toroidal (ring-buffer) addressing (see [[project-ddgi]] planning - // notes): the grid recenters on the camera every frame by snapping - // grid_min to the nearest whole probe-spacing step (ddgi_make_info, - // DDGIGraph.cpp), but a probe's ATLAS SLOT (its grid_coord within - // [0, probe_counts)) is a fixed, unchanging function of its own - // absolute world-cell position -- NOT of grid_min. Two world cells - // exactly probe_counts apart alias to the same slot, which is safe - // precisely because grid_min/probe_counts/spacing together bound the - // cascade's current working volume to one such cell per residue class - // (ddgi_sample_irradiance_cascaded's own margin check already enforces - // this precondition, unchanged by this file). - // - // Given grid_min is always an exact multiple of spacing (by - // construction), window_origin = round(grid_min / spacing) is the - // window's own minimum corner in integer probe-cell units -- the one - // piece of state every wrap/unwrap direction below is built from. int3 ddgi_window_origin(float3 grid_min, float3 spacing) { return int3(round(grid_min / spacing)); } - // slot -> world position. `probe_grid_coord` is a bare atlas slot with - // no known relation to any particular world cell (DDGIProbeTrace's own - // dispatch-derived slot, or an 8-corner sample offset already wrapped - // into a valid slot by the caller) -- recovers the UNIQUE absolute - // world-cell in [window_origin, window_origin+probe_counts) that - // currently maps to it. Reduces to the old direct `grid_min + - // coord*spacing` when the grid has never scrolled (window_origin's own - // wrap of a slot already in range is a no-op), so this is a strict - // superset of the pre-toroidal behavior, not a special case of it. float3 ddgi_probe_world_pos(uint3 probe_grid_coord, float3 grid_min, float3 probe_spacing, float3 probe_offset, uint3 probe_counts) { int3 window_origin = ddgi_window_origin(grid_min, probe_spacing); @@ -78,27 +46,12 @@ struct DDGIProbes return float3(absolute_cell) * probe_spacing + probe_offset; } - // world position -> atlas slot. Pure function of the world cell alone - // (no grid_min/window_origin involved) -- this is what makes a probe's - // slot assignment independent of how far the window has scrolled, the - // entire point of toroidal addressing. Only valid for a world_pos - // already known to fall within the cascade's current working volume - // (ddgi_sample_irradiance_cascaded's own margin check, or a hit point a - // caller has already cascade-selected) -- outside that volume this - // still returns SOME slot (wrapping never fails), it just may not be - // the slot the caller actually meant. uint3 ddgi_world_to_slot(float3 world_pos, float3 probe_spacing, uint3 probe_counts) { int3 absolute_cell = int3(floor(world_pos / probe_spacing)); return uint3(ddgi_wrap(absolute_cell, probe_counts)); } - // Texel-space origin (top-left corner) of a probe's cell within the 2D - // (x,z) plane of any of the DDGI_Probe*/atlas array textures -- probe_y - // doesn't participate here at all, it's an array-slice offset instead - // (ddgi_atlas_array_slice, below). All three atlas textures share this - // same plane layout, so one helper serves radiance, irradiance and - // visibility lookups alike. uint2 ddgi_atlas_origin(uint3 probe_grid_coord, uint texel_size) { uint2 origin; @@ -107,12 +60,6 @@ struct DDGIProbes return origin; } - // Inverse of ddgi_atlas_origin: which probe (x,z) a given atlas-plane - // texel belongs to. probe_grid_coord.y is NOT recovered here -- callers - // that dispatch per-cascade already know their own probe.y directly - // (the dispatch's own 3rd dimension, or ddgi_atlas_array_slice's - // inverse below when only an array slice is in hand), so it's passed in - // rather than re-derived. uint3 ddgi_atlas_probe_coord(uint2 atlas_texel, uint texel_size, uint probe_grid_y) { uint2 cell = atlas_texel / texel_size; @@ -123,11 +70,6 @@ struct DDGIProbes return coord; } - // Which array slice of the shared, DDGI_AtlasArraySlices-deep atlas - // array a probe's own (probe_y, cascade) pair lives in -- this cascade's - // own DDGIInfo::cascade_info.y (precomputed in C++, ddgi_make_info) is - // its slice range's own start, so this is just that plus the probe's - // local y. Inverse (slice -> probe_y) is `slice - cascade_slice_offset`. uint ddgi_atlas_array_slice(uint probe_grid_y, uint cascade_slice_offset) { return cascade_slice_offset + probe_grid_y; @@ -139,5 +81,4 @@ struct DDGIProbes return (float2(local) + 0.5) / float(texel_size) * 2.0 - 1.0; } - }; \ No newline at end of file diff --git a/workdir/shaders/autogen/tables/DebugInfo.h b/workdir/shaders/autogen/tables/DebugInfo.h index 9885c48a8..71661707b 100644 --- a/workdir/shaders/autogen/tables/DebugInfo.h +++ b/workdir/shaders/autogen/tables/DebugInfo.h @@ -14,24 +14,28 @@ struct DebugInfo uint logCount; // RWStructuredBuffer RWStructuredBuffer GetDebug() { return ResourceDescriptorHeap[debug]; } RWStructuredBuffer GetLogCount() { return ResourceDescriptorHeap[logCount]; } - void LogWrite(uint id, uint4 args) - { - uint slot; - InterlockedAdd(GetLogCount()[0], 1, slot); + void LogWrite(uint id, uint4 args) + { + uint slot; + InterlockedAdd(GetLogCount()[0], 1, slot); - if (slot < 64) - { - DebugStruct e; - e.format_id = id; - e.args = args; - GetDebug()[slot] = e; - } + if (slot < 64) + { + DebugStruct e; + e.format_id = id; + e.args = args; + GetDebug()[slot] = e; } + } + + void Log(uint id) { LogWrite(id, uint4(0, 0, 0, 0)); } + + void Log(uint id, uint a0) { LogWrite(id, uint4(a0, 0, 0, 0)); } + + void Log(uint id, uint a0, uint a1) { LogWrite(id, uint4(a0, a1, 0, 0)); } + + void Log(uint id, uint a0, uint a1, uint a2) { LogWrite(id, uint4(a0, a1, a2, 0)); } + + void Log(uint id, uint a0, uint a1, uint a2, uint a3) { LogWrite(id, uint4(a0, a1, a2, a3)); } - void Log(uint id) { LogWrite(id, uint4(0, 0, 0, 0)); } - void Log(uint id, uint a0) { LogWrite(id, uint4(a0, 0, 0, 0)); } - void Log(uint id, uint a0, uint a1) { LogWrite(id, uint4(a0, a1, 0, 0)); } - void Log(uint id, uint a0, uint a1, uint a2) { LogWrite(id, uint4(a0, a1, a2, 0)); } - void Log(uint id, uint a0, uint a1, uint a2, uint a3) { LogWrite(id, uint4(a0, a1, a2, a3)); } - }; \ No newline at end of file diff --git a/workdir/shaders/autogen/tables/FrameInfo.h b/workdir/shaders/autogen/tables/FrameInfo.h index 566800e41..6f3080cd0 100644 --- a/workdir/shaders/autogen/tables/FrameInfo.h +++ b/workdir/shaders/autogen/tables/FrameInfo.h @@ -30,36 +30,33 @@ struct FrameInfo Texture3D GetBrdf() { return ResourceDescriptorHeap[brdf]; } TextureCube GetSky() { return ResourceDescriptorHeap[sky]; } Texture2D GetMainHiZ() { return ResourceDescriptorHeap[mainHiZ]; } - float2 IntegrateBRDF(float Roughness, float Metallic, float NoV) - { - return GetBrdf().SampleLevel(linearClampSampler, float3(Roughness, Metallic, 0.5 + 0.5 * NoV), 0); - } + float2 IntegrateBRDF(float Roughness, float Metallic, float NoV) + { + return GetBrdf().SampleLevel(linearClampSampler, float3(Roughness, Metallic, 0.5 + 0.5 * NoV), 0); + } - - half3 compress_normals(inout half3 vNormal) - { - // renormalize (needed only if any blending or interpolation happened before) - vNormal.rgb = normalize(vNormal.rgb); - // get unsigned normal for the cubemap lookup - half3 vNormalUns = abs(vNormal.rgb); - // get the main axis for cubemap lookup - half maxNAbs = max(vNormalUns.z, max(vNormalUns.x, vNormalUns.y)); - // get texture coordinates in a collapsed cubemap - float2 vTexCoord = vNormalUns.z uint4 GetVoxels_per_tile() { return voxels_per_tile; } StructuredBuffer GetTiles() { return ResourceDescriptorHeap[tiles]; } - -uint3 get_voxel_pos(uint3 dispatchID) -{ - uint tile_index = dispatchID.x / voxels_per_tile.x; - uint3 tile_pos = GetTiles()[tile_index] * voxels_per_tile.xyz; + uint3 get_voxel_pos(uint3 dispatchID) + { + uint tile_index = dispatchID.x / voxels_per_tile.x; + uint3 tile_pos = GetTiles()[tile_index] * voxels_per_tile.xyz; + + uint3 tile_local_pos = dispatchID - int3(tile_index * voxels_per_tile.x, 0, 0); + uint3 index = tile_pos + tile_local_pos; + return index; + } - uint3 tile_local_pos = dispatchID - int3(tile_index * voxels_per_tile.x, 0, 0); - uint3 index = tile_pos + tile_local_pos; - return index; -} - - }; \ No newline at end of file From 56cec004e801e1ebd721922cbd27bd86fd9bb14c Mon Sep 17 00:00:00 2001 From: cheater Date: Wed, 23 Sep 2026 17:00:31 +0300 Subject: [PATCH 4/5] Prism welcome --- .agents/skills/add-render-pass/SKILL.md | 20 +- .agents/skills/prism-regen/SKILL.md | 82 + .agents/skills/sig-regen/SKILL.md | 76 - .claude/skills/add-render-pass/SKILL.md | 20 +- .claude/skills/prism-regen/SKILL.md | 82 + .claude/skills/sig-regen/SKILL.md | 76 - AGENTS.md | 11 +- CLAUDE.md | 11 +- README.md | 16 +- generate_prism_parser.bat | 4 + generate_sigs.bat | 2 - main.sharpmake.cs | 18 +- overview/Barriers.txt | 8 +- overview/HAL.txt | 2 +- overview/Prism.txt | 568 +++ overview/RenderSystem.txt | 2 +- overview/readme.txt | 78 +- .../API/D3D12/HAL.D3D12.IndirectCommand.ixx | 4 +- sources/HAL/API/Vulkan/REFACTOR_TODO.md | 2 +- sources/HAL/DXC/DXC.ShaderCompiler.cpp | 2 +- sources/HAL/HAL.CommandList.ixx | 2 +- sources/HAL/HAL.DLSSRR.ixx | 2 +- sources/HAL/HAL.DescriptorHeap.ixx | 2 +- sources/HAL/HAL.NRD.cpp | 42 +- sources/HAL/HAL.NRD.ixx | 10 +- sources/HAL/HAL.Sampler.ixx | 2 +- sources/HAL/SIG/RTX.ixx | 4 +- sources/HAL/SIG/SIG.ixx | 4 +- sources/HAL/SIG/Slots.ixx | 8 +- sources/HAL/autogen/Constants.ixx | 8 +- sources/HAL/autogen/autogen.cpp | 4 +- sources/HAL/autogen/autogen.ixx | 4 +- sources/HAL/autogen/enums.ixx | 4 +- .../autogen/layout/DefaultLayout.layout.ixx | 4 +- .../HAL/autogen/layout/FrameLayout.layout.ixx | 4 +- .../HAL/autogen/layout/NoneLayout.layout.ixx | 4 +- sources/HAL/autogen/pso.cpp | 6 +- sources/HAL/autogen/pso/BRDF.pso.ixx | 4 +- sources/HAL/autogen/pso/BlendWeight.pso.ixx | 4 +- .../autogen/pso/BlendWeightCompute.pso.ixx | 4 +- sources/HAL/autogen/pso/Blending.pso.ixx | 4 +- .../HAL/autogen/pso/BlendingCompute.pso.ixx | 4 +- sources/HAL/autogen/pso/BlueNoise.pso.ixx | 4 +- sources/HAL/autogen/pso/CanvasBack.pso.ixx | 4 +- sources/HAL/autogen/pso/CanvasLines.pso.ixx | 4 +- sources/HAL/autogen/pso/CopyTexture.pso.ixx | 4 +- sources/HAL/autogen/pso/CubemapENV.pso.ixx | 4 +- .../HAL/autogen/pso/CubemapENVDiffuse.pso.ixx | 4 +- sources/HAL/autogen/pso/DDGIDebug.pso.ixx | 4 +- .../HAL/autogen/pso/DDGIIndirectDebug.pso.ixx | 4 +- .../HAL/autogen/pso/DDGIProbeConvolve.pso.ixx | 4 +- .../pso/DDGIProbeResidencyMark.pso.ixx | 4 +- .../HAL/autogen/pso/DDGIProbeSelect.pso.ixx | 4 +- .../autogen/pso/DenoiserShadow_Filter.pso.ixx | 4 +- .../pso/DenoiserShadow_Prepare.pso.ixx | 4 +- .../DenoiserShadow_TileClassification.pso.ixx | 4 +- sources/HAL/autogen/pso/DepthDraw.pso.ixx | 4 +- .../autogen/pso/DispatchRaysArgsBuild.pso.ixx | 4 +- .../HAL/autogen/pso/DownsampleDepth.pso.ixx | 4 +- .../autogen/pso/DownsampleDepthMip.pso.ixx | 4 +- sources/HAL/autogen/pso/DrawAxis.pso.ixx | 4 +- sources/HAL/autogen/pso/DrawBox.pso.ixx | 4 +- sources/HAL/autogen/pso/DrawRing.pso.ixx | 4 +- sources/HAL/autogen/pso/DrawRingPick.pso.ixx | 4 +- sources/HAL/autogen/pso/DrawSelected.pso.ixx | 4 +- sources/HAL/autogen/pso/DrawStencil.pso.ixx | 4 +- sources/HAL/autogen/pso/EdgeDetect.pso.ixx | 4 +- .../HAL/autogen/pso/EdgeDetectCompute.pso.ixx | 4 +- sources/HAL/autogen/pso/FSR.pso.ixx | 4 +- sources/HAL/autogen/pso/FontRender.pso.ixx | 4 +- .../FrameGraph_Debug_NotImplemented.pso.ixx | 4 +- .../pso/FrameGraph_Debug_Texture2D.pso.ixx | 4 +- .../FrameGraph_Debug_Texture2DArray.pso.ixx | 4 +- .../pso/FrameGraph_Debug_Texture3D.pso.ixx | 4 +- .../pso/FrameGraph_Debug_TextureCube.pso.ixx | 4 +- .../HAL/autogen/pso/GBufferDownsample.pso.ixx | 4 +- sources/HAL/autogen/pso/GBufferDraw.pso.ixx | 4 +- sources/HAL/autogen/pso/GatherBoxes.pso.ixx | 4 +- sources/HAL/autogen/pso/GatherMeshes.pso.ixx | 4 +- .../HAL/autogen/pso/GatherPipeline.pso.ixx | 4 +- sources/HAL/autogen/pso/InitDispatch.pso.ixx | 4 +- sources/HAL/autogen/pso/Lighting.pso.ixx | 4 +- .../HAL/autogen/pso/MaterialPreview.pso.ixx | 4 +- .../HAL/autogen/pso/MaterialPreview3D.pso.ixx | 4 +- sources/HAL/autogen/pso/MipMapping.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_Clear_Test.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_Clear_UInt4.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_GBufferPack.pso.ixx | 4 +- .../autogen/pso/NRD_IndirectCombine.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_REBLUR_Blur.pso.ixx | 4 +- .../pso/NRD_REBLUR_Blur_Specular.pso.ixx | 4 +- .../pso/NRD_REBLUR_ClassifyTiles.pso.ixx | 4 +- .../autogen/pso/NRD_REBLUR_HistoryFix.pso.ixx | 4 +- .../NRD_REBLUR_HistoryFix_Specular.pso.ixx | 4 +- .../NRD_REBLUR_HitDistReconstruction.pso.ixx | 4 +- ...RD_REBLUR_HitDistReconstruction5x5.pso.ixx | 4 +- ..._HitDistReconstruction5x5_Specular.pso.ixx | 4 +- ...LUR_HitDistReconstruction_Specular.pso.ixx | 4 +- .../pso/NRD_REBLUR_PostBlurTS0.pso.ixx | 4 +- .../NRD_REBLUR_PostBlurTS0_Specular.pso.ixx | 4 +- .../pso/NRD_REBLUR_PostBlurTS1.pso.ixx | 4 +- .../NRD_REBLUR_PostBlurTS1_Specular.pso.ixx | 4 +- .../autogen/pso/NRD_REBLUR_PrePass.pso.ixx | 4 +- .../pso/NRD_REBLUR_PrePass_Specular.pso.ixx | 4 +- .../pso/NRD_REBLUR_SplitScreen.pso.ixx | 4 +- .../NRD_REBLUR_TemporalAccumulation.pso.ixx | 4 +- ...BLUR_TemporalAccumulation_Specular.pso.ixx | 4 +- .../NRD_REBLUR_TemporalStabilization.pso.ixx | 4 +- ...LUR_TemporalStabilization_Specular.pso.ixx | 4 +- .../autogen/pso/NRD_REBLUR_Validation.pso.ixx | 4 +- .../pso/NRD_SIGMA_BlurFirstPass0.pso.ixx | 4 +- .../pso/NRD_SIGMA_BlurFirstPass1.pso.ixx | 4 +- .../pso/NRD_SIGMA_ClassifyTiles.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_SIGMA_Copy.pso.ixx | 4 +- .../autogen/pso/NRD_SIGMA_SmoothTiles.pso.ixx | 4 +- .../autogen/pso/NRD_SIGMA_SplitScreen.pso.ixx | 4 +- .../NRD_SIGMA_TemporalStabilization.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_ShadowCombine.pso.ixx | 4 +- .../HAL/autogen/pso/NRD_UnpackDebug.pso.ixx | 4 +- sources/HAL/autogen/pso/NinePatch.pso.ixx | 4 +- .../autogen/pso/NormalRoughnessRepack.pso.ixx | 4 +- sources/HAL/autogen/pso/PSSMApply.pso.ixx | 4 +- .../HAL/autogen/pso/PSSMApplyCompute.pso.ixx | 4 +- sources/HAL/autogen/pso/PSSMMask.pso.ixx | 4 +- sources/HAL/autogen/pso/QualityColor.pso.ixx | 4 +- .../HAL/autogen/pso/QualityToStencil.pso.ixx | 4 +- .../autogen/pso/QualityToStencilREfl.pso.ixx | 4 +- sources/HAL/autogen/pso/RCAS.pso.ixx | 4 +- sources/HAL/autogen/pso/RTXCombine.pso.ixx | 4 +- .../pso/RTXShadowReferenceCompute.pso.ixx | 4 +- .../HAL/autogen/pso/ReflectionCombine.pso.ixx | 4 +- sources/HAL/autogen/pso/RenderBoxes.pso.ixx | 4 +- sources/HAL/autogen/pso/RenderToDS.pso.ixx | 4 +- sources/HAL/autogen/pso/SS_Shadow.pso.ixx | 4 +- sources/HAL/autogen/pso/SimpleRect.pso.ixx | 4 +- sources/HAL/autogen/pso/Sky.pso.ixx | 4 +- sources/HAL/autogen/pso/SkyCompute.pso.ixx | 4 +- sources/HAL/autogen/pso/SkyCube.pso.ixx | 4 +- sources/HAL/autogen/pso/StatGraph.pso.ixx | 4 +- .../HAL/autogen/pso/StatGraphLines.pso.ixx | 4 +- sources/HAL/autogen/pso/StencilerLast.pso.ixx | 4 +- .../HAL/autogen/pso/VSMApplyCompute.pso.ixx | 4 +- .../autogen/pso/VSMBlockerClassify.pso.ixx | 4 +- .../pso/VSMBlockerSearchCompute.pso.ixx | 4 +- .../HAL/autogen/pso/VSMCopyPageDepth.pso.ixx | 4 +- .../autogen/pso/VSMCopyPageDepthBatch.pso.ixx | 4 +- .../autogen/pso/VSMDebugOverlayBlur.pso.ixx | 4 +- .../pso/VSMDebugOverlayConfirmedLit.pso.ixx | 4 +- .../pso/VSMDebugOverlayContactShadow.pso.ixx | 4 +- .../autogen/pso/VSMDebugOverlayDark.pso.ixx | 4 +- .../autogen/pso/VSMDebugOverlayLit.pso.ixx | 4 +- .../pso/VSMDebugOverlayPageGrid.pso.ixx | 4 +- .../pso/VSMDebugOverlayRtxReference.pso.ixx | 4 +- .../HAL/autogen/pso/VSMDepthAnalysis.pso.ixx | 4 +- sources/HAL/autogen/pso/VSMDepthDraw.pso.ixx | 4 +- .../pso/VSMDepthDrawConservative.pso.ixx | 4 +- .../autogen/pso/VSMDepthDrawMaterial.pso.ixx | 4 +- .../autogen/pso/VSMDownsampleHiZBatch.pso.ixx | 4 +- sources/HAL/autogen/pso/VSMFullLit.pso.ixx | 4 +- sources/HAL/autogen/pso/VSMFullShadow.pso.ixx | 4 +- .../HAL/autogen/pso/VSMGatherDispatch.pso.ixx | 4 +- .../pso/VSMGatherDispatchMaterial.pso.ixx | 4 +- .../autogen/pso/VSMScreenSpaceShadow.pso.ixx | 4 +- sources/HAL/autogen/pso/VSMShadowBlur.pso.ixx | 4 +- sources/HAL/autogen/pso/VoxelCopy.pso.ixx | 4 +- sources/HAL/autogen/pso/VoxelDebug.pso.ixx | 4 +- .../HAL/autogen/pso/VoxelDownsample.pso.ixx | 4 +- .../HAL/autogen/pso/VoxelVisibility.pso.ixx | 4 +- sources/HAL/autogen/pso/VoxelZero.pso.ixx | 4 +- sources/HAL/autogen/pso/Voxelization.pso.ixx | 4 +- .../pso/WorkGR_ClassifyPixels_Node.pso.ixx | 4 +- .../autogen/pso/WorkGR_Shadows_Node.pso.ixx | 4 +- sources/HAL/autogen/rt/DepthOnly.rt.ixx | 4 +- sources/HAL/autogen/rt/GBuffer.rt.ixx | 4 +- sources/HAL/autogen/rt/NoOutput.rt.ixx | 4 +- sources/HAL/autogen/rt/SingleColor.rt.ixx | 4 +- .../HAL/autogen/rt/SingleColorDepth.rt.ixx | 4 +- sources/HAL/autogen/rtx/ColorPass.h | 4 +- sources/HAL/autogen/rtx/ColorRTX.h | 4 +- sources/HAL/autogen/rtx/ColorShadowPass.h | 4 +- sources/HAL/autogen/rtx/DDGIProbeTrace.h | 4 +- sources/HAL/autogen/rtx/Indirect.h | 4 +- sources/HAL/autogen/rtx/IndirectRTX.h | 4 +- sources/HAL/autogen/rtx/IndirectRTXHalf.h | 4 +- sources/HAL/autogen/rtx/MainRTX.rtx.ixx | 4 +- sources/HAL/autogen/rtx/Reflection.h | 4 +- sources/HAL/autogen/rtx/ReflectionRTX.h | 4 +- sources/HAL/autogen/rtx/ReflectionRTXHalf.h | 4 +- sources/HAL/autogen/rtx/Shadow.h | 4 +- sources/HAL/autogen/rtx/ShadowPass.h | 4 +- sources/HAL/autogen/rtx/ShadowRTX.h | 4 +- sources/HAL/autogen/slots/BRDF.ixx | 4 +- sources/HAL/autogen/slots/BlueNoise.ixx | 4 +- sources/HAL/autogen/slots/Clear_Constants.ixx | 4 +- .../autogen/slots/Clear_UInt4Resources.ixx | 4 +- sources/HAL/autogen/slots/Color.ixx | 4 +- sources/HAL/autogen/slots/ColorRTXOutput.ixx | 4 +- sources/HAL/autogen/slots/ColorRect.ixx | 4 +- sources/HAL/autogen/slots/CopyTexture.ixx | 4 +- sources/HAL/autogen/slots/Countour.ixx | 4 +- sources/HAL/autogen/slots/DDGIDebugData.ixx | 4 +- .../autogen/slots/DDGIIndirectDebugData.ixx | 4 +- sources/HAL/autogen/slots/DDGIInfo.ixx | 4 +- .../autogen/slots/DDGIProbeConvolveData.ixx | 4 +- .../slots/DDGIProbeResidencyMarkData.ixx | 4 +- .../HAL/autogen/slots/DDGIProbeSelectData.ixx | 4 +- .../HAL/autogen/slots/DDGIProbeTraceData.ixx | 4 +- sources/HAL/autogen/slots/DebugInfo.ixx | 4 +- .../autogen/slots/DenoiserShadow_Filter.ixx | 4 +- .../slots/DenoiserShadow_FilterLast.ixx | 4 +- .../slots/DenoiserShadow_FilterLocal.ixx | 4 +- .../autogen/slots/DenoiserShadow_Prepare.ixx | 4 +- .../DenoiserShadow_TileClassification.ixx | 4 +- .../HAL/autogen/slots/DispatchParameters.ixx | 4 +- .../slots/DispatchRaysArgsBuildData.ixx | 4 +- sources/HAL/autogen/slots/DownsampleDepth.ixx | 4 +- .../HAL/autogen/slots/DownsampleDepthMip.ixx | 4 +- sources/HAL/autogen/slots/DrawBoxes.ixx | 4 +- sources/HAL/autogen/slots/DrawStencil.ixx | 4 +- sources/HAL/autogen/slots/EnvFilter.ixx | 4 +- sources/HAL/autogen/slots/EnvSource.ixx | 4 +- sources/HAL/autogen/slots/FSR.ixx | 4 +- sources/HAL/autogen/slots/FlowGraph.ixx | 4 +- sources/HAL/autogen/slots/FontRendering.ixx | 4 +- .../autogen/slots/FontRenderingConstants.ixx | 4 +- .../HAL/autogen/slots/FontRenderingGlyphs.ixx | 4 +- .../autogen/slots/FrameGraph_Debug_Common.ixx | 4 +- .../slots/FrameGraph_Debug_Texture2D.ixx | 4 +- .../slots/FrameGraph_Debug_Texture2DArray.ixx | 4 +- .../slots/FrameGraph_Debug_Texture3D.ixx | 4 +- .../slots/FrameGraph_Debug_TextureCube.ixx | 4 +- sources/HAL/autogen/slots/FrameInfo.ixx | 4 +- sources/HAL/autogen/slots/GBuffer.ixx | 4 +- sources/HAL/autogen/slots/GBufferQuality.ixx | 4 +- sources/HAL/autogen/slots/GatherBoxes.ixx | 4 +- .../HAL/autogen/slots/GatherMeshesBoxes.ixx | 4 +- sources/HAL/autogen/slots/GatherPipeline.ixx | 4 +- .../autogen/slots/GatherPipelineGlobal.ixx | 4 +- .../autogen/slots/IndirectRTXHalfGBuffer.ixx | 4 +- .../HAL/autogen/slots/IndirectRTXUpscale.ixx | 4 +- sources/HAL/autogen/slots/InitDispatch.ixx | 4 +- sources/HAL/autogen/slots/Instance.ixx | 4 +- sources/HAL/autogen/slots/LineRender.ixx | 4 +- sources/HAL/autogen/slots/MaterialInfo.ixx | 4 +- .../HAL/autogen/slots/MaterialPreviewInfo.ixx | 4 +- sources/HAL/autogen/slots/MeshInfo.ixx | 4 +- .../HAL/autogen/slots/MeshInstanceInfo.ixx | 4 +- sources/HAL/autogen/slots/MipMapping.ixx | 4 +- .../autogen/slots/NRD_GBufferPackParams.ixx | 4 +- .../slots/NRD_IndirectCombineParams.ixx | 4 +- .../autogen/slots/NRD_ShadowCombineParams.ixx | 4 +- .../autogen/slots/NRD_UnpackDebugParams.ixx | 4 +- sources/HAL/autogen/slots/NinePatch.ixx | 4 +- .../slots/NormalRoughnessRepackParams.ixx | 4 +- sources/HAL/autogen/slots/PSSMConstants.ixx | 4 +- sources/HAL/autogen/slots/PSSMData.ixx | 4 +- sources/HAL/autogen/slots/PSSMDataGlobal.ixx | 4 +- sources/HAL/autogen/slots/PSSMLighting.ixx | 4 +- sources/HAL/autogen/slots/PickerBuffer.ixx | 4 +- .../autogen/slots/REBLUR_BlurResources.ixx | 4 +- .../slots/REBLUR_BlurSpecularResources.ixx | 4 +- .../slots/REBLUR_ClassifyTilesResources.ixx | 4 +- .../slots/REBLUR_HistoryFixResources.ixx | 4 +- .../REBLUR_HistoryFixSpecularResources.ixx | 4 +- .../REBLUR_HitDistReconstructionResources.ixx | 4 +- ...HitDistReconstructionSpecularResources.ixx | 4 +- .../slots/REBLUR_PostBlurTS0Resources.ixx | 4 +- .../REBLUR_PostBlurTS0SpecularResources.ixx | 4 +- .../slots/REBLUR_PostBlurTS1Resources.ixx | 4 +- .../REBLUR_PostBlurTS1SpecularResources.ixx | 4 +- .../autogen/slots/REBLUR_PrePassResources.ixx | 4 +- .../slots/REBLUR_PrePassSpecularResources.ixx | 4 +- .../slots/REBLUR_SplitScreenResources.ixx | 4 +- .../REBLUR_TemporalAccumulationResources.ixx | 4 +- ..._TemporalAccumulationSpecularResources.ixx | 4 +- .../REBLUR_TemporalStabilizationResources.ixx | 4 +- ...TemporalStabilizationSpecularResources.ixx | 4 +- .../slots/REBLUR_ValidationResources.ixx | 4 +- sources/HAL/autogen/slots/RTXCombine.ixx | 4 +- .../HAL/autogen/slots/RTXShadowReference.ixx | 4 +- sources/HAL/autogen/slots/Raytracing.ixx | 4 +- sources/HAL/autogen/slots/RaytracingRays.ixx | 4 +- .../HAL/autogen/slots/ReflectionCombine.ixx | 4 +- .../autogen/slots/ReflectionRTXUpscale.ixx | 4 +- .../slots/SIGMA_BlurFirstPass0Resources.ixx | 4 +- .../slots/SIGMA_BlurFirstPass1Resources.ixx | 4 +- .../slots/SIGMA_ClassifyTilesResources.ixx | 4 +- .../HAL/autogen/slots/SIGMA_CopyResources.ixx | 4 +- .../slots/SIGMA_SmoothTilesResources.ixx | 4 +- .../slots/SIGMA_SplitScreenResources.ixx | 4 +- .../SIGMA_TemporalStabilizationResources.ixx | 4 +- sources/HAL/autogen/slots/SMAA_Blend.ixx | 4 +- sources/HAL/autogen/slots/SMAA_Global.ixx | 4 +- sources/HAL/autogen/slots/SMAA_Weights.ixx | 4 +- sources/HAL/autogen/slots/SceneData.ixx | 4 +- sources/HAL/autogen/slots/SkyData.ixx | 4 +- sources/HAL/autogen/slots/SkyFace.ixx | 4 +- sources/HAL/autogen/slots/StatGraph.ixx | 4 +- sources/HAL/autogen/slots/StatGraphLine.ixx | 4 +- sources/HAL/autogen/slots/Test.ixx | 4 +- sources/HAL/autogen/slots/TextureRenderer.ixx | 4 +- .../HAL/autogen/slots/TileClassifyData.ixx | 4 +- .../autogen/slots/VSMBlockerSearchOutput.ixx | 4 +- .../autogen/slots/VSMBlockerTilesAppend.ixx | 4 +- sources/HAL/autogen/slots/VSMConstants.ixx | 4 +- .../HAL/autogen/slots/VSMCopyPageDepth.ixx | 4 +- .../autogen/slots/VSMCopyPageDepthBatch.ixx | 4 +- .../HAL/autogen/slots/VSMDepthAnalysis.ixx | 4 +- .../autogen/slots/VSMDownsampleHiZBatch.ixx | 4 +- .../autogen/slots/VSMGatherDispatchData.ixx | 4 +- .../slots/VSMGatherDispatchMaterialData.ixx | 4 +- sources/HAL/autogen/slots/VSMLighting.ixx | 4 +- sources/HAL/autogen/slots/VSMPageBatch.ixx | 4 +- sources/HAL/autogen/slots/VSMPageHiZ.ixx | 4 +- .../HAL/autogen/slots/VSMPageTableData.ixx | 4 +- .../slots/VSMScreenSpaceShadowParams.ixx | 4 +- .../autogen/slots/VSMSearchVerdictAppend.ixx | 4 +- .../HAL/autogen/slots/VSMShadowLookupData.ixx | 4 +- .../HAL/autogen/slots/VSMShadowResolveIO.ixx | 4 +- sources/HAL/autogen/slots/VSMTileListRead.ixx | 4 +- sources/HAL/autogen/slots/VoxelCopy.ixx | 4 +- sources/HAL/autogen/slots/VoxelDebug.ixx | 4 +- sources/HAL/autogen/slots/VoxelInfo.ixx | 4 +- sources/HAL/autogen/slots/VoxelLighting.ixx | 4 +- sources/HAL/autogen/slots/VoxelMipMap.ixx | 4 +- sources/HAL/autogen/slots/VoxelOutput.ixx | 4 +- sources/HAL/autogen/slots/VoxelScreen.ixx | 4 +- sources/HAL/autogen/slots/VoxelUpscale.ixx | 4 +- sources/HAL/autogen/slots/VoxelVisibility.ixx | 4 +- sources/HAL/autogen/slots/VoxelZero.ixx | 4 +- sources/HAL/autogen/slots/Voxelization.ixx | 4 +- .../WorkGR_ClassifyPixels_NodeEmulation.ixx | 4 +- .../slots/WorkGR_Shadows_NodeEmulation.ixx | 4 +- sources/HAL/autogen/slots/WorkGraphTest.ixx | 4 +- sources/HAL/autogen/tables/AABB.table.ixx | 4 +- sources/HAL/autogen/tables/BRDF.table.ixx | 4 +- .../HAL/autogen/tables/BlueNoise.table.ixx | 4 +- sources/HAL/autogen/tables/BoxInfo.table.ixx | 4 +- sources/HAL/autogen/tables/Camera.table.ixx | 4 +- .../autogen/tables/Clear_Constants.table.ixx | 4 +- .../tables/Clear_UInt4Resources.table.ixx | 4 +- sources/HAL/autogen/tables/Color.table.ixx | 4 +- .../autogen/tables/ColorRTXOutput.table.ixx | 4 +- .../HAL/autogen/tables/ColorRect.table.ixx | 4 +- .../tables/ColorShadowPayload.table.ixx | 4 +- .../HAL/autogen/tables/CommandData.table.ixx | 4 +- .../HAL/autogen/tables/CopyTexture.table.ixx | 4 +- sources/HAL/autogen/tables/Countour.table.ixx | 4 +- .../autogen/tables/DDGIDebugData.table.ixx | 4 +- .../tables/DDGIIndirectDebugData.table.ixx | 4 +- sources/HAL/autogen/tables/DDGIInfo.table.ixx | 4 +- .../tables/DDGIProbeConvolveData.table.ixx | 4 +- .../tables/DDGIProbeMetadata.table.ixx | 4 +- .../DDGIProbeResidencyMarkData.table.ixx | 4 +- .../tables/DDGIProbeSelectData.table.ixx | 4 +- .../tables/DDGIProbeTraceData.table.ixx | 4 +- .../HAL/autogen/tables/DDGIProbes.table.ixx | 4 +- .../autogen/tables/DDGISelectors.table.ixx | 4 +- .../HAL/autogen/tables/DebugInfo.table.ixx | 4 +- .../HAL/autogen/tables/DebugStruct.table.ixx | 4 +- .../tables/DenoiserShadow_Filter.table.ixx | 4 +- .../DenoiserShadow_FilterLast.table.ixx | 4 +- .../DenoiserShadow_FilterLocal.table.ixx | 4 +- .../tables/DenoiserShadow_Prepare.table.ixx | 4 +- ...enoiserShadow_TileClassification.table.ixx | 4 +- .../HAL/autogen/tables/DepthOnly.table.ixx | 4 +- .../tables/DispatchParameters.table.ixx | 4 +- .../DispatchRaysArgsBuildData.table.ixx | 4 +- .../autogen/tables/DownsampleDepth.table.ixx | 4 +- .../tables/DownsampleDepthMip.table.ixx | 4 +- .../HAL/autogen/tables/DrawBoxes.table.ixx | 4 +- .../HAL/autogen/tables/DrawStencil.table.ixx | 4 +- .../HAL/autogen/tables/EnvFilter.table.ixx | 4 +- .../HAL/autogen/tables/EnvSource.table.ixx | 4 +- sources/HAL/autogen/tables/FSR.table.ixx | 4 +- .../HAL/autogen/tables/FSRConstants.table.ixx | 4 +- .../HAL/autogen/tables/FlowGraph.table.ixx | 4 +- .../autogen/tables/FontRendering.table.ixx | 4 +- .../tables/FontRenderingConstants.table.ixx | 4 +- .../tables/FontRenderingGlyphs.table.ixx | 4 +- .../tables/FrameGraph_Debug_Common.table.ixx | 4 +- .../FrameGraph_Debug_Texture2D.table.ixx | 4 +- .../FrameGraph_Debug_Texture2DArray.table.ixx | 4 +- .../FrameGraph_Debug_Texture3D.table.ixx | 4 +- .../FrameGraph_Debug_TextureCube.table.ixx | 4 +- .../HAL/autogen/tables/FrameInfo.table.ixx | 4 +- sources/HAL/autogen/tables/Frustum.table.ixx | 4 +- sources/HAL/autogen/tables/GBuffer.table.ixx | 4 +- .../autogen/tables/GBufferQuality.table.ixx | 4 +- .../HAL/autogen/tables/GatherBoxes.table.ixx | 4 +- .../tables/GatherMeshesBoxes.table.ixx | 4 +- .../autogen/tables/GatherPipeline.table.ixx | 4 +- .../tables/GatherPipelineGlobal.table.ixx | 4 +- sources/HAL/autogen/tables/Glyph.table.ixx | 4 +- .../HAL/autogen/tables/GraphInput.table.ixx | 4 +- .../tables/IndirectGISelectors.table.ixx | 4 +- .../tables/IndirectRTXHalfGBuffer.table.ixx | 4 +- .../tables/IndirectRTXUpscale.table.ixx | 4 +- .../HAL/autogen/tables/InitDispatch.table.ixx | 4 +- sources/HAL/autogen/tables/Instance.table.ixx | 4 +- .../HAL/autogen/tables/LineRender.table.ixx | 4 +- .../tables/MaterialCommandData.table.ixx | 4 +- .../HAL/autogen/tables/MaterialInfo.table.ixx | 4 +- .../tables/MaterialPreviewInfo.table.ixx | 4 +- .../autogen/tables/MeshCommandData.table.ixx | 4 +- sources/HAL/autogen/tables/MeshInfo.table.ixx | 4 +- .../HAL/autogen/tables/MeshInstance.table.ixx | 4 +- .../autogen/tables/MeshInstanceInfo.table.ixx | 4 +- sources/HAL/autogen/tables/Meshlet.table.ixx | 4 +- .../autogen/tables/MeshletCullData.table.ixx | 4 +- .../HAL/autogen/tables/MipMapping.table.ixx | 4 +- .../tables/NRD_GBufferPackParams.table.ixx | 4 +- .../NRD_IndirectCombineParams.table.ixx | 4 +- .../tables/NRD_ShadowCombineParams.table.ixx | 4 +- .../tables/NRD_UnpackDebugParams.table.ixx | 4 +- .../HAL/autogen/tables/NinePatch.table.ixx | 4 +- sources/HAL/autogen/tables/NoOutput.table.ixx | 4 +- .../NormalRoughnessRepackParams.table.ixx | 4 +- .../autogen/tables/PSSMConstants.table.ixx | 4 +- sources/HAL/autogen/tables/PSSMData.table.ixx | 4 +- .../autogen/tables/PSSMDataGlobal.table.ixx | 4 +- .../HAL/autogen/tables/PSSMLighting.table.ixx | 4 +- .../HAL/autogen/tables/PickerBuffer.table.ixx | 4 +- .../tables/REBLURSharedConstants.table.ixx | 4 +- .../tables/REBLUR_BlurResources.table.ixx | 4 +- .../REBLUR_BlurSpecularResources.table.ixx | 4 +- .../REBLUR_ClassifyTilesResources.table.ixx | 4 +- .../REBLUR_HistoryFixResources.table.ixx | 4 +- ...BLUR_HistoryFixSpecularResources.table.ixx | 4 +- ...R_HitDistReconstructionResources.table.ixx | 4 +- ...tReconstructionSpecularResources.table.ixx | 4 +- .../REBLUR_PostBlurTS0Resources.table.ixx | 4 +- ...LUR_PostBlurTS0SpecularResources.table.ixx | 4 +- .../REBLUR_PostBlurTS1Resources.table.ixx | 4 +- ...LUR_PostBlurTS1SpecularResources.table.ixx | 4 +- .../tables/REBLUR_PrePassResources.table.ixx | 4 +- .../REBLUR_PrePassSpecularResources.table.ixx | 4 +- .../REBLUR_SplitScreenResources.table.ixx | 4 +- ...UR_TemporalAccumulationResources.table.ixx | 4 +- ...ralAccumulationSpecularResources.table.ixx | 4 +- ...R_TemporalStabilizationResources.table.ixx | 4 +- ...alStabilizationSpecularResources.table.ixx | 4 +- .../REBLUR_ValidationResources.table.ixx | 4 +- .../HAL/autogen/tables/RTXCombine.table.ixx | 4 +- .../tables/RTXShadowReference.table.ixx | 4 +- sources/HAL/autogen/tables/RayCone.table.ixx | 4 +- .../HAL/autogen/tables/RayPayload.table.ixx | 4 +- .../tables/RaytraceInstanceInfo.table.ixx | 4 +- .../HAL/autogen/tables/Raytracing.table.ixx | 4 +- .../autogen/tables/RaytracingRays.table.ixx | 4 +- .../tables/ReflectionCombine.table.ixx | 4 +- .../tables/ReflectionRTXUpscale.table.ixx | 4 +- .../tables/RenderDeviceCapabilities.table.ixx | 4 +- .../tables/SIGMASharedConstants.table.ixx | 4 +- .../SIGMA_BlurFirstPass0Resources.table.ixx | 4 +- .../SIGMA_BlurFirstPass1Resources.table.ixx | 4 +- .../SIGMA_ClassifyTilesResources.table.ixx | 4 +- .../tables/SIGMA_CopyResources.table.ixx | 4 +- .../SIGMA_SmoothTilesResources.table.ixx | 4 +- .../SIGMA_SplitScreenResources.table.ixx | 4 +- ...A_TemporalStabilizationResources.table.ixx | 4 +- .../HAL/autogen/tables/SMAA_Blend.table.ixx | 4 +- .../HAL/autogen/tables/SMAA_Global.table.ixx | 4 +- .../HAL/autogen/tables/SMAA_Weights.table.ixx | 4 +- .../HAL/autogen/tables/SceneData.table.ixx | 4 +- .../autogen/tables/ShadowPayload.table.ixx | 4 +- .../HAL/autogen/tables/SingleColor.table.ixx | 4 +- .../autogen/tables/SingleColorDepth.table.ixx | 4 +- sources/HAL/autogen/tables/SkyData.table.ixx | 4 +- sources/HAL/autogen/tables/SkyFace.table.ixx | 4 +- sources/HAL/autogen/tables/SkyState.table.ixx | 4 +- .../HAL/autogen/tables/StatGraph.table.ixx | 4 +- .../autogen/tables/StatGraphLine.table.ixx | 4 +- .../HAL/autogen/tables/StencilState.table.ixx | 4 +- sources/HAL/autogen/tables/Test.table.ixx | 4 +- .../autogen/tables/TextureRenderer.table.ixx | 4 +- .../autogen/tables/TileClassifyData.table.ixx | 4 +- .../HAL/autogen/tables/TileRecord.table.ixx | 4 +- sources/HAL/autogen/tables/Triangle.table.ixx | 4 +- .../autogen/tables/UIRenderState.table.ixx | 4 +- sources/HAL/autogen/tables/UIState.table.ixx | 4 +- .../tables/UpscalerSelectors.table.ixx | 4 +- sources/HAL/autogen/tables/VSLine.table.ixx | 4 +- .../tables/VSMBlockerSearchOutput.table.ixx | 4 +- .../tables/VSMBlockerTilesAppend.table.ixx | 4 +- .../HAL/autogen/tables/VSMConstants.table.ixx | 4 +- .../autogen/tables/VSMCopyPageDepth.table.ixx | 4 +- .../tables/VSMCopyPageDepthBatch.table.ixx | 4 +- .../autogen/tables/VSMDepthAnalysis.table.ixx | 4 +- .../tables/VSMDispatchCommandData.table.ixx | 4 +- .../tables/VSMDownsampleHiZBatch.table.ixx | 4 +- .../tables/VSMGatherDispatchData.table.ixx | 4 +- .../VSMGatherDispatchMaterialData.table.ixx | 4 +- .../tables/VSMLevelDispatchInfo.table.ixx | 4 +- .../HAL/autogen/tables/VSMLighting.table.ixx | 4 +- .../HAL/autogen/tables/VSMPageBatch.table.ixx | 4 +- .../HAL/autogen/tables/VSMPageHiZ.table.ixx | 4 +- .../autogen/tables/VSMPageTableData.table.ixx | 4 +- .../VSMScreenSpaceShadowParams.table.ixx | 4 +- .../tables/VSMSearchVerdictAppend.table.ixx | 4 +- .../HAL/autogen/tables/VSMSelectors.table.ixx | 4 +- .../autogen/tables/VSMShadowLookup.table.ixx | 4 +- .../tables/VSMShadowLookupData.table.ixx | 4 +- .../tables/VSMShadowResolveIO.table.ixx | 4 +- .../autogen/tables/VSMTileListRead.table.ixx | 4 +- .../autogen/tables/ViewportContext.table.ixx | 4 +- .../HAL/autogen/tables/VoxelCopy.table.ixx | 4 +- .../HAL/autogen/tables/VoxelDebug.table.ixx | 4 +- .../autogen/tables/VoxelGISelectors.table.ixx | 4 +- .../HAL/autogen/tables/VoxelInfo.table.ixx | 4 +- .../autogen/tables/VoxelLighting.table.ixx | 4 +- .../HAL/autogen/tables/VoxelMipMap.table.ixx | 4 +- .../HAL/autogen/tables/VoxelOutput.table.ixx | 4 +- .../HAL/autogen/tables/VoxelScreen.table.ixx | 4 +- .../tables/VoxelTilingParams.table.ixx | 4 +- .../HAL/autogen/tables/VoxelUpscale.table.ixx | 4 +- .../autogen/tables/VoxelVisibility.table.ixx | 4 +- .../HAL/autogen/tables/VoxelZero.table.ixx | 4 +- .../HAL/autogen/tables/Voxelization.table.ixx | 4 +- ...kGR_ClassifyPixels_NodeEmulation.table.ixx | 4 +- .../WorkGR_Shadows_NodeEmulation.table.ixx | 4 +- .../autogen/tables/WorkGraphTest.table.ixx | 4 +- .../tables/mesh_vertex_input.table.ixx | 4 +- .../HAL/autogen/tables/node_data.table.ixx | 4 +- .../HAL/autogen/tables/vertex_input.table.ixx | 4 +- .../SIG.interp => Prism/.antlr/Prism.interp} | 0 .../SIG.tokens => Prism/.antlr/Prism.tokens} | 0 sources/Prism/.antlr/PrismBaseListener.cpp | 7 + sources/Prism/.antlr/PrismBaseListener.h | 308 ++ sources/Prism/.antlr/PrismBaseVisitor.cpp | 7 + sources/Prism/.antlr/PrismBaseVisitor.h | 396 ++ .../.antlr/PrismLexer.cpp} | 72 +- .../SIGLexer.h => Prism/.antlr/PrismLexer.h} | 8 +- .../.antlr/PrismLexer.interp} | 0 .../.antlr/PrismLexer.tokens} | 0 sources/Prism/.antlr/PrismListener.cpp | 7 + sources/Prism/.antlr/PrismListener.h | 301 ++ .../.antlr/PrismParser.cpp} | 4292 ++++++++--------- .../.antlr/PrismParser.h} | 10 +- sources/Prism/.antlr/PrismVisitor.cpp | 7 + sources/Prism/.antlr/PrismVisitor.h | 212 + .../.antlr/antlr4-runtime.h | 0 sources/{SIGParser => Prism}/Defines.h | 4 +- sources/{SIGParser => Prism}/Diagnostics.h | 0 sources/{SIGParser => Prism}/LSP.cpp | 20 +- sources/{SIGParser => Prism}/LSP.h | 2 +- sources/{SIGParser => Prism}/Main.cpp | 20 +- sources/{SIGParser => Prism}/Parsed.cpp | 2 +- sources/{SIGParser => Prism}/Parsed.h | 6 +- sources/{SIGParser => Prism}/Parsing.cpp | 66 +- sources/{SIGParser => Prism}/Parsing.h | 2 +- sources/{SIGParser/SIG.g4 => Prism/Prism.g4} | 10 +- sources/{SIGParser => Prism}/REFACTOR_TODO.md | 70 +- sources/{SIGParser => Prism}/Validate.cpp | 10 +- sources/{SIGParser => Prism}/Validate.h | 2 +- .../antlr-4.11.1-complete.jar | Bin .../defs/AssetRenderer.prism} | 2 +- .../defs/BlueNoise.prism} | 0 .../defs/DenoiserShadow.prism} | 0 .../sigs/FSR.sig => Prism/defs/FSR.prism} | 0 .../defs/FrameData.prism} | 4 +- .../defs/MipMapping.prism} | 0 .../defs/SS_Shadow.prism} | 0 .../defs/UpscalingDLSS.prism} | 2 +- .../defs/UpscalingDLSSRR.prism} | 8 +- .../defs/WorkGraph.prism} | 0 .../sigs/brdf.sig => Prism/defs/brdf.prism} | 0 .../sigs/ddgi.sig => Prism/defs/ddgi.prism} | 38 +- .../defs/defaultlayout.prism} | 2 +- .../defs/font_render.prism} | 0 .../helpers.sig => Prism/defs/helpers.prism} | 0 .../defs/material.prism} | 0 .../defs/material_preview.prism} | 2 +- .../defs/meshrender.prism} | 2 +- .../defs/nrd_sig_test.prism} | 20 +- .../sigs/pssm.sig => Prism/defs/pssm.prism} | 4 +- .../defs/raytracing.prism} | 28 +- .../sigs/scene.sig => Prism/defs/scene.prism} | 2 +- .../sigs/sky.sig => Prism/defs/sky.prism} | 0 .../sigs/smaa.sig => Prism/defs/smaa.prism} | 0 .../defs/stenciler.prism} | 0 .../sigs/test.sig => Prism/defs/test.prism} | 18 +- .../sigs/ui.sig => Prism/defs/ui.prism} | 0 .../sigs/voxel.sig => Prism/defs/voxel.prism} | 46 +- .../sigs/vsm.sig => Prism/defs/vsm.prism} | 44 +- sources/Prism/editor/PrismCommands.vsct | 61 + .../editor/PrismLanguageClient.cs} | 38 +- .../editor/PrismPackage.cs} | 54 +- .../editor/gen_vs_extension.py | 188 +- sources/{SIGParser => Prism}/generate.bat | 2 +- .../templates/cpp/autogen.jinja | 4 +- .../templates/cpp/autogen_impl.jinja | 4 +- .../templates/cpp/constants.jinja | 8 +- .../templates/cpp/context_deps.jinja | 8 +- .../templates/cpp/context_snapshot_cpp.jinja | 6 +- .../templates/cpp/enums.jinja | 4 +- .../templates/cpp/layout.jinja | 4 +- .../templates/cpp/pass.jinja | 6 +- .../templates/cpp/pass_defaults.jinja | 6 +- .../templates/cpp/pass_defaults_cpp.jinja | 8 +- .../templates/cpp/pass_enums.jinja | 4 +- .../templates/cpp/pass_ids.jinja | 4 +- .../templates/cpp/pass_view.jinja | 4 +- .../templates/cpp/passes.jinja | 4 +- .../templates/cpp/pipeline.jinja | 4 +- .../templates/cpp/pso.jinja | 4 +- .../templates/cpp/psos.jinja | 6 +- .../templates/cpp/raygen_pass.jinja | 4 +- .../templates/cpp/raytrace_pass.jinja | 4 +- .../templates/cpp/resource_ids.jinja | 4 +- .../templates/cpp/rt.jinja | 4 +- .../templates/cpp/rtx_pso.jinja | 4 +- .../templates/cpp/slot.jinja | 4 +- .../templates/cpp/table.jinja | 4 +- .../templates/cpp/workgraph_node_pso.jinja | 4 +- .../templates/hlsl/enums.jinja | 4 +- .../templates/hlsl/layout.jinja | 4 +- .../templates/hlsl/nobind_table.jinja | 4 +- .../templates/hlsl/pass.jinja | 4 +- .../templates/hlsl/pso.jinja | 4 +- .../templates/hlsl/rt.jinja | 4 +- .../templates/hlsl/slot.jinja | 4 +- .../templates/hlsl/table.jinja | 4 +- .../templates/hlsl/workgraph_nodes.jinja | 4 +- sources/RenderSystem/Assets/AssetRenderer.cpp | 2 +- sources/RenderSystem/Effects/DDGI/DDGI.ixx | 10 +- .../RenderSystem/Effects/DDGI/DDGIGraph.cpp | 48 +- .../Effects/DLSS/UpscalingDLSS.cpp | 2 +- .../Effects/DLSS/UpscalingDLSS.ixx | 6 +- .../Effects/DLSS/UpscalingDLSSRR.cpp | 4 +- sources/RenderSystem/Effects/FSR/FSR.cpp | 2 +- .../RenderSystem/Effects/PostProcess/SMAA.cpp | 2 +- .../RenderSystem/Effects/PostProcess/SMAA.ixx | 2 +- sources/RenderSystem/Effects/Sky.cpp | 12 +- sources/RenderSystem/Effects/Sky.ixx | 2 +- .../Effects/VoxelGI/IndirectRTX.cpp | 4 +- .../Effects/VoxelGI/IndirectRTX.ixx | 2 +- .../Effects/VoxelGI/NRD_GBufferPack.cpp | 4 +- .../Effects/VoxelGI/NRD_GBufferPack.ixx | 2 +- .../Effects/VoxelGI/NRD_IndirectCombine.cpp | 2 +- .../Effects/VoxelGI/NRD_REBLUR_Execute.cpp | 4 +- .../Effects/VoxelGI/NRD_REBLUR_Execute.ixx | 2 +- .../Effects/VoxelGI/NRD_SIGMA_Execute.cpp | 8 +- .../Effects/VoxelGI/NRD_SIGMA_Execute.ixx | 2 +- .../Effects/VoxelGI/NRD_ShadowCombine.cpp | 2 +- .../Effects/VoxelGI/RTXCombine.cpp | 2 +- .../Effects/VoxelGI/RTXCombine.ixx | 2 +- .../Effects/VoxelGI/ReflectionRTX.cpp | 6 +- .../Effects/VoxelGI/ReflectionRTX.ixx | 2 +- .../Effects/VoxelGI/ShadowRTX.cpp | 2 +- .../Effects/VoxelGI/ShadowRTX.ixx | 2 +- .../RenderSystem/Effects/VoxelGI/VoxelGI.ixx | 4 +- .../Effects/VoxelGI/VoxelGIGraph.cpp | 26 +- .../FrameGraph/FrameGraph.Base.ixx | 12 +- .../RenderSystem/FrameGraph/FrameGraph.cpp | 2 +- .../RenderSystem/FrameGraph/PassDefaults.cpp | 10 +- .../FrameGraph/autogen/context_deps.h | 8 +- .../FrameGraph/autogen/context_snapshot.cpp | 6 +- .../RenderSystem/FrameGraph/autogen/enums.h | 4 +- .../FrameGraph/autogen/pass/AssetGBuffer.h | 6 +- .../FrameGraph/autogen/pass/AssetMip.h | 4 +- .../autogen/pass/AssetPipeline.pipeline.h | 4 +- .../FrameGraph/autogen/pass/AssetPreview.h | 4 +- .../FrameGraph/autogen/pass/BlueNoise.h | 6 +- .../autogen/pass/CubeMapDownsample.h | 4 +- .../autogen/pass/CubeMapEnviromentProcessor.h | 6 +- .../FrameGraph/autogen/pass/CubeSky.h | 6 +- .../FrameGraph/autogen/pass/DDGIDebug.h | 4 +- .../autogen/pass/DDGIIndirectDebug.h | 6 +- .../autogen/pass/DDGIProbeConvolve.h | 4 +- .../autogen/pass/DDGIProbeDispatchArgsBuild.h | 4 +- .../autogen/pass/DDGIProbeResidencyMark.h | 4 +- .../FrameGraph/autogen/pass/DDGIProbeSelect.h | 6 +- .../FrameGraph/autogen/pass/DDGIProbeTrace.h | 6 +- .../FrameGraph/autogen/pass/FSR.h | 6 +- .../autogen/pass/GBufferDownsampler.h | 6 +- .../FrameGraph/autogen/pass/IndirectRTX.h | 6 +- .../FrameGraph/autogen/pass/IndirectRTXHalf.h | 6 +- .../FrameGraph/autogen/pass/Lighting.h | 4 +- .../autogen/pass/MainPipeline.pipeline.h | 4 +- .../FrameGraph/autogen/pass/Mipmapping.h | 4 +- .../FrameGraph/autogen/pass/NRD_GBufferPack.h | 6 +- .../autogen/pass/NRD_IndirectCombine.h | 4 +- .../autogen/pass/NRD_REBLUR_Execute.h | 6 +- .../autogen/pass/NRD_SIGMA_Execute.h | 6 +- .../autogen/pass/NRD_ShadowCombine.h | 4 +- .../autogen/pass/NormalRoughnessRepack.h | 6 +- .../FrameGraph/autogen/pass/PSSM_Cascade.h | 6 +- .../FrameGraph/autogen/pass/PSSM_Combine.h | 4 +- .../autogen/pass/PSSM_GenerateMask.h | 6 +- .../FrameGraph/autogen/pass/PSSM_Global.h | 6 +- .../FrameGraph/autogen/pass/PreScene.h | 6 +- .../FrameGraph/autogen/pass/Profiler.h | 4 +- .../FrameGraph/autogen/pass/RTXColorPass.h | 6 +- .../FrameGraph/autogen/pass/RTXCombine.h | 6 +- .../FrameGraph/autogen/pass/RTXShadow.h | 6 +- .../FrameGraph/autogen/pass/ReflCombine.h | 4 +- .../FrameGraph/autogen/pass/ReflectionRTX.h | 6 +- .../autogen/pass/ReflectionRTXHalf.h | 6 +- .../FrameGraph/autogen/pass/ResultCreation.h | 6 +- .../FrameGraph/autogen/pass/SMAA.h | 6 +- .../FrameGraph/autogen/pass/Scene.h | 6 +- .../autogen/pass/ScreenReflection.h | 6 +- .../FrameGraph/autogen/pass/ShadowRTX.h | 6 +- .../FrameGraph/autogen/pass/Sky.h | 4 +- .../autogen/pass/UIPipeline.pipeline.h | 4 +- .../FrameGraph/autogen/pass/UI_PreDraw.h | 6 +- .../FrameGraph/autogen/pass/UI_Render.h | 4 +- .../FrameGraph/autogen/pass/UpscalingDLSS.h | 6 +- .../FrameGraph/autogen/pass/UpscalingDLSSRR.h | 6 +- .../autogen/pass/VSM_BlockerClassify.h | 6 +- .../autogen/pass/VSM_BlockerSearch.h | 6 +- .../FrameGraph/autogen/pass/VSM_Combine.h | 4 +- .../autogen/pass/VSM_DebugClassifyOverlay.h | 4 +- .../autogen/pass/VSM_DepthAnalysis.h | 6 +- .../autogen/pass/VSM_GatherDispatch.h | 6 +- .../FrameGraph/autogen/pass/VSM_HiZRebuild.h | 6 +- .../FrameGraph/autogen/pass/VSM_RenderPages.h | 6 +- .../autogen/pass/VSM_ScreenSpaceShadow.h | 6 +- .../autogen/pass/VSM_ShadowResolve.h | 6 +- .../FrameGraph/autogen/pass/VoxelDebug.h | 6 +- .../FrameGraph/autogen/pass/VoxelScreen.h | 6 +- .../FrameGraph/autogen/pass/Voxelize.h | 4 +- .../autogen/pass/stencil_renderer_after.h | 6 +- .../autogen/pass/stencil_renderer_before.h | 6 +- .../FrameGraph/autogen/pass_defaults.cpp | 8 +- .../FrameGraph/autogen/pass_defaults.h | 6 +- .../FrameGraph/autogen/pass_ids.h | 4 +- .../FrameGraph/autogen/passes.ixx | 4 +- .../FrameGraph/autogen/resource_ids.h | 4 +- sources/RenderSystem/GUI/Base.cpp | 10 +- sources/RenderSystem/Helpers/BlueNoise.cpp | 2 +- sources/RenderSystem/Helpers/BlueNoise.ixx | 2 +- sources/RenderSystem/Lighting/PSSM.cpp | 8 +- sources/RenderSystem/Lighting/PSSM.ixx | 4 +- .../RenderSystem/Materials/PreviewSession.cpp | 4 +- sources/RenderSystem/Materials/Values.cpp | 4 +- sources/RenderSystem/Materials/Values.ixx | 2 +- .../Materials/universal_material.ixx | 2 +- .../RenderSystem/Renderer/StencilRenderer.cpp | 6 +- .../RenderSystem/Renderer/StencilRenderer.ixx | 2 +- sources/RenderSystem/Scene/PreSceneSystem.cpp | 2 +- sources/RenderSystem/Scene/SceneSystem.cpp | 4 +- sources/RenderSystem/Shadows/VSM/VSM.cpp | 42 +- sources/RenderSystem/Shadows/VSM/VSM.ixx | 30 +- .../Shadows/VSM/VSMInvalidationTracker.ixx | 2 +- sources/SIGParser/.antlr/SIGBaseListener.cpp | 7 - sources/SIGParser/.antlr/SIGBaseListener.h | 308 -- sources/SIGParser/.antlr/SIGBaseVisitor.cpp | 7 - sources/SIGParser/.antlr/SIGBaseVisitor.h | 396 -- sources/SIGParser/.antlr/SIGListener.cpp | 7 - sources/SIGParser/.antlr/SIGListener.h | 301 -- sources/SIGParser/.antlr/SIGVisitor.cpp | 7 - sources/SIGParser/.antlr/SIGVisitor.h | 212 - sources/SIGParser/editor/SigCommands.vsct | 61 - sources/SIGParser/output.txt | 1 - sources/Spectrum/main.cpp | 14 +- sources/Test/Tests/Test.HAL.SIG.ixx | 2 +- workdir/shaders/autogen/BRDF.h | 4 +- workdir/shaders/autogen/BlueNoise.h | 4 +- workdir/shaders/autogen/Clear_Constants.h | 4 +- .../shaders/autogen/Clear_UInt4Resources.h | 4 +- workdir/shaders/autogen/Color.h | 4 +- workdir/shaders/autogen/ColorRTXOutput.h | 4 +- workdir/shaders/autogen/ColorRect.h | 4 +- workdir/shaders/autogen/CopyTexture.h | 4 +- workdir/shaders/autogen/Countour.h | 4 +- workdir/shaders/autogen/DDGIDebugData.h | 4 +- .../shaders/autogen/DDGIIndirectDebugData.h | 4 +- workdir/shaders/autogen/DDGIInfo.h | 4 +- .../shaders/autogen/DDGIProbeConvolveData.h | 4 +- .../autogen/DDGIProbeResidencyMarkData.h | 4 +- workdir/shaders/autogen/DDGIProbeSelectData.h | 4 +- workdir/shaders/autogen/DDGIProbeTraceData.h | 4 +- workdir/shaders/autogen/DebugInfo.h | 4 +- .../shaders/autogen/DenoiserShadow_Filter.h | 4 +- .../autogen/DenoiserShadow_FilterLast.h | 4 +- .../autogen/DenoiserShadow_FilterLocal.h | 4 +- .../shaders/autogen/DenoiserShadow_Prepare.h | 4 +- .../DenoiserShadow_TileClassification.h | 4 +- workdir/shaders/autogen/DispatchParameters.h | 4 +- .../autogen/DispatchRaysArgsBuildData.h | 4 +- workdir/shaders/autogen/DownsampleDepth.h | 4 +- workdir/shaders/autogen/DownsampleDepthMip.h | 4 +- workdir/shaders/autogen/DrawBoxes.h | 4 +- workdir/shaders/autogen/DrawStencil.h | 4 +- workdir/shaders/autogen/EnvFilter.h | 4 +- workdir/shaders/autogen/EnvSource.h | 4 +- workdir/shaders/autogen/FSR.h | 4 +- workdir/shaders/autogen/FlowGraph.h | 4 +- workdir/shaders/autogen/FontRendering.h | 4 +- .../shaders/autogen/FontRenderingConstants.h | 4 +- workdir/shaders/autogen/FontRenderingGlyphs.h | 4 +- .../shaders/autogen/FrameGraph_Debug_Common.h | 4 +- .../autogen/FrameGraph_Debug_Texture2D.h | 4 +- .../autogen/FrameGraph_Debug_Texture2DArray.h | 4 +- .../autogen/FrameGraph_Debug_Texture3D.h | 4 +- .../autogen/FrameGraph_Debug_TextureCube.h | 4 +- workdir/shaders/autogen/FrameInfo.h | 4 +- workdir/shaders/autogen/GBuffer.h | 4 +- workdir/shaders/autogen/GBufferQuality.h | 4 +- workdir/shaders/autogen/GatherBoxes.h | 4 +- workdir/shaders/autogen/GatherMeshesBoxes.h | 4 +- workdir/shaders/autogen/GatherPipeline.h | 4 +- .../shaders/autogen/GatherPipelineGlobal.h | 4 +- .../shaders/autogen/IndirectRTXHalfGBuffer.h | 4 +- workdir/shaders/autogen/IndirectRTXUpscale.h | 4 +- workdir/shaders/autogen/InitDispatch.h | 4 +- workdir/shaders/autogen/Instance.h | 4 +- workdir/shaders/autogen/LineRender.h | 4 +- workdir/shaders/autogen/MaterialInfo.h | 4 +- workdir/shaders/autogen/MaterialPreviewInfo.h | 4 +- workdir/shaders/autogen/MeshInfo.h | 4 +- workdir/shaders/autogen/MeshInstanceInfo.h | 4 +- workdir/shaders/autogen/MipMapping.h | 4 +- .../shaders/autogen/NRD_GBufferPackParams.h | 4 +- .../autogen/NRD_IndirectCombineParams.h | 4 +- .../shaders/autogen/NRD_ShadowCombineParams.h | 4 +- .../shaders/autogen/NRD_UnpackDebugParams.h | 4 +- workdir/shaders/autogen/NinePatch.h | 4 +- .../autogen/NormalRoughnessRepackParams.h | 4 +- workdir/shaders/autogen/PSSMConstants.h | 4 +- workdir/shaders/autogen/PSSMData.h | 4 +- workdir/shaders/autogen/PSSMDataGlobal.h | 4 +- workdir/shaders/autogen/PSSMLighting.h | 4 +- workdir/shaders/autogen/PickerBuffer.h | 4 +- .../shaders/autogen/REBLUR_BlurResources.h | 4 +- .../autogen/REBLUR_BlurSpecularResources.h | 4 +- .../autogen/REBLUR_ClassifyTilesResources.h | 4 +- .../autogen/REBLUR_HistoryFixResources.h | 4 +- .../REBLUR_HistoryFixSpecularResources.h | 4 +- .../REBLUR_HitDistReconstructionResources.h | 4 +- ...R_HitDistReconstructionSpecularResources.h | 4 +- .../autogen/REBLUR_PostBlurTS0Resources.h | 4 +- .../REBLUR_PostBlurTS0SpecularResources.h | 4 +- .../autogen/REBLUR_PostBlurTS1Resources.h | 4 +- .../REBLUR_PostBlurTS1SpecularResources.h | 4 +- .../shaders/autogen/REBLUR_PrePassResources.h | 4 +- .../autogen/REBLUR_PrePassSpecularResources.h | 4 +- .../autogen/REBLUR_SplitScreenResources.h | 4 +- .../REBLUR_TemporalAccumulationResources.h | 4 +- ...UR_TemporalAccumulationSpecularResources.h | 4 +- .../REBLUR_TemporalStabilizationResources.h | 4 +- ...R_TemporalStabilizationSpecularResources.h | 4 +- .../autogen/REBLUR_ValidationResources.h | 4 +- workdir/shaders/autogen/RTXCombine.h | 4 +- workdir/shaders/autogen/RTXShadowReference.h | 4 +- workdir/shaders/autogen/Raytracing.h | 4 +- workdir/shaders/autogen/RaytracingRays.h | 4 +- workdir/shaders/autogen/ReflectionCombine.h | 4 +- .../shaders/autogen/ReflectionRTXUpscale.h | 4 +- .../autogen/SIGMA_BlurFirstPass0Resources.h | 4 +- .../autogen/SIGMA_BlurFirstPass1Resources.h | 4 +- .../autogen/SIGMA_ClassifyTilesResources.h | 4 +- workdir/shaders/autogen/SIGMA_CopyResources.h | 4 +- .../autogen/SIGMA_SmoothTilesResources.h | 4 +- .../autogen/SIGMA_SplitScreenResources.h | 4 +- .../SIGMA_TemporalStabilizationResources.h | 4 +- workdir/shaders/autogen/SMAA_Blend.h | 4 +- workdir/shaders/autogen/SMAA_Global.h | 4 +- workdir/shaders/autogen/SMAA_Weights.h | 4 +- workdir/shaders/autogen/SceneData.h | 4 +- workdir/shaders/autogen/SkyData.h | 4 +- workdir/shaders/autogen/SkyFace.h | 4 +- workdir/shaders/autogen/StatGraph.h | 4 +- workdir/shaders/autogen/StatGraphLine.h | 4 +- workdir/shaders/autogen/Test.h | 4 +- workdir/shaders/autogen/TextureRenderer.h | 4 +- workdir/shaders/autogen/TileClassifyData.h | 4 +- .../shaders/autogen/VSMBlockerSearchOutput.h | 4 +- .../shaders/autogen/VSMBlockerTilesAppend.h | 4 +- workdir/shaders/autogen/VSMConstants.h | 4 +- workdir/shaders/autogen/VSMCopyPageDepth.h | 4 +- .../shaders/autogen/VSMCopyPageDepthBatch.h | 4 +- workdir/shaders/autogen/VSMDepthAnalysis.h | 4 +- .../shaders/autogen/VSMDownsampleHiZBatch.h | 4 +- .../shaders/autogen/VSMGatherDispatchData.h | 4 +- .../autogen/VSMGatherDispatchMaterialData.h | 4 +- workdir/shaders/autogen/VSMLighting.h | 4 +- workdir/shaders/autogen/VSMPageBatch.h | 4 +- workdir/shaders/autogen/VSMPageHiZ.h | 4 +- workdir/shaders/autogen/VSMPageTableData.h | 4 +- .../autogen/VSMScreenSpaceShadowParams.h | 4 +- .../shaders/autogen/VSMSearchVerdictAppend.h | 4 +- workdir/shaders/autogen/VSMShadowLookupData.h | 4 +- workdir/shaders/autogen/VSMShadowResolveIO.h | 4 +- workdir/shaders/autogen/VSMTileListRead.h | 4 +- workdir/shaders/autogen/VoxelCopy.h | 4 +- workdir/shaders/autogen/VoxelDebug.h | 4 +- workdir/shaders/autogen/VoxelInfo.h | 4 +- workdir/shaders/autogen/VoxelLighting.h | 4 +- workdir/shaders/autogen/VoxelMipMap.h | 4 +- workdir/shaders/autogen/VoxelOutput.h | 4 +- workdir/shaders/autogen/VoxelScreen.h | 4 +- workdir/shaders/autogen/VoxelUpscale.h | 4 +- workdir/shaders/autogen/VoxelVisibility.h | 4 +- workdir/shaders/autogen/VoxelZero.h | 4 +- workdir/shaders/autogen/Voxelization.h | 4 +- .../WorkGR_ClassifyPixels_NodeEmulation.h | 4 +- .../autogen/WorkGR_Shadows_NodeEmulation.h | 4 +- workdir/shaders/autogen/WorkGraphTest.h | 4 +- .../shaders/autogen/layout/DefaultLayout.h | 4 +- workdir/shaders/autogen/layout/FrameLayout.h | 4 +- workdir/shaders/autogen/layout/NoneLayout.h | 4 +- workdir/shaders/autogen/rt/DepthOnly.h | 4 +- workdir/shaders/autogen/rt/GBuffer.h | 4 +- workdir/shaders/autogen/rt/NoOutput.h | 4 +- workdir/shaders/autogen/rt/SingleColor.h | 4 +- workdir/shaders/autogen/rt/SingleColorDepth.h | 4 +- workdir/shaders/autogen/rtx/ColorPass.h | 4 +- workdir/shaders/autogen/rtx/ColorShadowPass.h | 4 +- workdir/shaders/autogen/rtx/ShadowPass.h | 4 +- workdir/shaders/autogen/tables/AABB.h | 4 +- workdir/shaders/autogen/tables/BRDF.h | 4 +- workdir/shaders/autogen/tables/BlueNoise.h | 4 +- workdir/shaders/autogen/tables/BoxInfo.h | 4 +- workdir/shaders/autogen/tables/Camera.h | 4 +- .../shaders/autogen/tables/Clear_Constants.h | 4 +- .../autogen/tables/Clear_UInt4Resources.h | 4 +- workdir/shaders/autogen/tables/Color.h | 4 +- .../shaders/autogen/tables/ColorRTXOutput.h | 4 +- workdir/shaders/autogen/tables/ColorRect.h | 4 +- .../autogen/tables/ColorShadowPayload.h | 4 +- workdir/shaders/autogen/tables/CommandData.h | 4 +- workdir/shaders/autogen/tables/CopyTexture.h | 4 +- workdir/shaders/autogen/tables/Countour.h | 4 +- .../shaders/autogen/tables/DDGIDebugData.h | 4 +- .../autogen/tables/DDGIIndirectDebugData.h | 4 +- workdir/shaders/autogen/tables/DDGIInfo.h | 4 +- .../autogen/tables/DDGIProbeConvolveData.h | 4 +- .../autogen/tables/DDGIProbeMetadata.h | 4 +- .../tables/DDGIProbeResidencyMarkData.h | 4 +- .../autogen/tables/DDGIProbeSelectData.h | 4 +- .../autogen/tables/DDGIProbeTraceData.h | 4 +- workdir/shaders/autogen/tables/DDGIProbes.h | 4 +- .../shaders/autogen/tables/DDGISelectors.h | 4 +- workdir/shaders/autogen/tables/DebugInfo.h | 4 +- workdir/shaders/autogen/tables/DebugStruct.h | 4 +- .../autogen/tables/DenoiserShadow_Filter.h | 4 +- .../tables/DenoiserShadow_FilterLast.h | 4 +- .../tables/DenoiserShadow_FilterLocal.h | 4 +- .../autogen/tables/DenoiserShadow_Prepare.h | 4 +- .../DenoiserShadow_TileClassification.h | 4 +- workdir/shaders/autogen/tables/DepthOnly.h | 4 +- .../autogen/tables/DispatchArguments.h | 4 +- .../autogen/tables/DispatchMeshArguments.h | 4 +- .../autogen/tables/DispatchParameters.h | 4 +- .../tables/DispatchRaysArgsBuildData.h | 4 +- .../autogen/tables/DispatchRaysArguments.h | 4 +- .../shaders/autogen/tables/DownsampleDepth.h | 4 +- .../autogen/tables/DownsampleDepthMip.h | 4 +- workdir/shaders/autogen/tables/DrawBoxes.h | 4 +- .../autogen/tables/DrawIndexedArguments.h | 4 +- workdir/shaders/autogen/tables/DrawStencil.h | 4 +- workdir/shaders/autogen/tables/EnvFilter.h | 4 +- workdir/shaders/autogen/tables/EnvSource.h | 4 +- workdir/shaders/autogen/tables/FSR.h | 4 +- workdir/shaders/autogen/tables/FSRConstants.h | 4 +- workdir/shaders/autogen/tables/FlowGraph.h | 4 +- .../shaders/autogen/tables/FontRendering.h | 4 +- .../autogen/tables/FontRenderingConstants.h | 4 +- .../autogen/tables/FontRenderingGlyphs.h | 4 +- .../autogen/tables/FrameGraph_Debug_Common.h | 4 +- .../tables/FrameGraph_Debug_Texture2D.h | 4 +- .../tables/FrameGraph_Debug_Texture2DArray.h | 4 +- .../tables/FrameGraph_Debug_Texture3D.h | 4 +- .../tables/FrameGraph_Debug_TextureCube.h | 4 +- workdir/shaders/autogen/tables/FrameInfo.h | 4 +- workdir/shaders/autogen/tables/Frustum.h | 4 +- workdir/shaders/autogen/tables/GBuffer.h | 4 +- .../shaders/autogen/tables/GBufferQuality.h | 4 +- workdir/shaders/autogen/tables/GPUAddress.h | 4 +- workdir/shaders/autogen/tables/GatherBoxes.h | 4 +- .../autogen/tables/GatherMeshesBoxes.h | 4 +- .../shaders/autogen/tables/GatherPipeline.h | 4 +- .../autogen/tables/GatherPipelineGlobal.h | 4 +- workdir/shaders/autogen/tables/Glyph.h | 4 +- workdir/shaders/autogen/tables/GraphInput.h | 4 +- .../autogen/tables/IndirectGISelectors.h | 4 +- .../autogen/tables/IndirectRTXHalfGBuffer.h | 4 +- .../autogen/tables/IndirectRTXUpscale.h | 4 +- workdir/shaders/autogen/tables/InitDispatch.h | 4 +- workdir/shaders/autogen/tables/Instance.h | 4 +- workdir/shaders/autogen/tables/LineRender.h | 4 +- .../autogen/tables/MaterialCommandData.h | 4 +- workdir/shaders/autogen/tables/MaterialInfo.h | 4 +- .../autogen/tables/MaterialPreviewInfo.h | 4 +- .../shaders/autogen/tables/MeshCommandData.h | 4 +- workdir/shaders/autogen/tables/MeshInfo.h | 4 +- workdir/shaders/autogen/tables/MeshInstance.h | 4 +- .../shaders/autogen/tables/MeshInstanceInfo.h | 4 +- workdir/shaders/autogen/tables/Meshlet.h | 4 +- .../shaders/autogen/tables/MeshletCullData.h | 4 +- workdir/shaders/autogen/tables/MipMapping.h | 4 +- .../autogen/tables/NRD_GBufferPackParams.h | 4 +- .../tables/NRD_IndirectCombineParams.h | 4 +- .../autogen/tables/NRD_ShadowCombineParams.h | 4 +- .../autogen/tables/NRD_UnpackDebugParams.h | 4 +- workdir/shaders/autogen/tables/NinePatch.h | 4 +- workdir/shaders/autogen/tables/NoOutput.h | 4 +- .../tables/NormalRoughnessRepackParams.h | 4 +- .../shaders/autogen/tables/PSSMConstants.h | 4 +- workdir/shaders/autogen/tables/PSSMData.h | 4 +- .../shaders/autogen/tables/PSSMDataGlobal.h | 4 +- workdir/shaders/autogen/tables/PSSMLighting.h | 4 +- workdir/shaders/autogen/tables/PickerBuffer.h | 4 +- .../autogen/tables/REBLURSharedConstants.h | 4 +- .../autogen/tables/REBLUR_BlurResources.h | 4 +- .../tables/REBLUR_BlurSpecularResources.h | 4 +- .../tables/REBLUR_ClassifyTilesResources.h | 4 +- .../tables/REBLUR_HistoryFixResources.h | 4 +- .../REBLUR_HistoryFixSpecularResources.h | 4 +- .../REBLUR_HitDistReconstructionResources.h | 4 +- ...R_HitDistReconstructionSpecularResources.h | 4 +- .../tables/REBLUR_PostBlurTS0Resources.h | 4 +- .../REBLUR_PostBlurTS0SpecularResources.h | 4 +- .../tables/REBLUR_PostBlurTS1Resources.h | 4 +- .../REBLUR_PostBlurTS1SpecularResources.h | 4 +- .../autogen/tables/REBLUR_PrePassResources.h | 4 +- .../tables/REBLUR_PrePassSpecularResources.h | 4 +- .../tables/REBLUR_SplitScreenResources.h | 4 +- .../REBLUR_TemporalAccumulationResources.h | 4 +- ...UR_TemporalAccumulationSpecularResources.h | 4 +- .../REBLUR_TemporalStabilizationResources.h | 4 +- ...R_TemporalStabilizationSpecularResources.h | 4 +- .../tables/REBLUR_ValidationResources.h | 4 +- workdir/shaders/autogen/tables/RTXCombine.h | 4 +- .../autogen/tables/RTXShadowReference.h | 4 +- workdir/shaders/autogen/tables/RayCone.h | 4 +- workdir/shaders/autogen/tables/RayPayload.h | 4 +- .../autogen/tables/RaytraceInstanceInfo.h | 4 +- workdir/shaders/autogen/tables/Raytracing.h | 4 +- .../shaders/autogen/tables/RaytracingRays.h | 4 +- .../autogen/tables/ReflectionCombine.h | 4 +- .../autogen/tables/ReflectionRTXUpscale.h | 4 +- .../autogen/tables/RenderDeviceCapabilities.h | 4 +- .../autogen/tables/SIGMASharedConstants.h | 4 +- .../tables/SIGMA_BlurFirstPass0Resources.h | 4 +- .../tables/SIGMA_BlurFirstPass1Resources.h | 4 +- .../tables/SIGMA_ClassifyTilesResources.h | 4 +- .../autogen/tables/SIGMA_CopyResources.h | 4 +- .../tables/SIGMA_SmoothTilesResources.h | 4 +- .../tables/SIGMA_SplitScreenResources.h | 4 +- .../SIGMA_TemporalStabilizationResources.h | 4 +- workdir/shaders/autogen/tables/SMAA_Blend.h | 4 +- workdir/shaders/autogen/tables/SMAA_Global.h | 4 +- workdir/shaders/autogen/tables/SMAA_Weights.h | 4 +- workdir/shaders/autogen/tables/SceneData.h | 4 +- .../shaders/autogen/tables/ShadowPayload.h | 4 +- workdir/shaders/autogen/tables/SingleColor.h | 4 +- .../shaders/autogen/tables/SingleColorDepth.h | 4 +- workdir/shaders/autogen/tables/SkyData.h | 4 +- workdir/shaders/autogen/tables/SkyFace.h | 4 +- workdir/shaders/autogen/tables/SkyState.h | 4 +- workdir/shaders/autogen/tables/StatGraph.h | 4 +- .../shaders/autogen/tables/StatGraphLine.h | 4 +- workdir/shaders/autogen/tables/StencilState.h | 4 +- workdir/shaders/autogen/tables/Test.h | 4 +- .../shaders/autogen/tables/TextureRenderer.h | 4 +- .../shaders/autogen/tables/TileClassifyData.h | 4 +- workdir/shaders/autogen/tables/TileRecord.h | 4 +- workdir/shaders/autogen/tables/Triangle.h | 4 +- .../shaders/autogen/tables/UIRenderState.h | 4 +- workdir/shaders/autogen/tables/UIState.h | 4 +- .../autogen/tables/UpscalerSelectors.h | 4 +- workdir/shaders/autogen/tables/VSLine.h | 4 +- .../autogen/tables/VSMBlockerSearchOutput.h | 4 +- .../autogen/tables/VSMBlockerTilesAppend.h | 4 +- workdir/shaders/autogen/tables/VSMConstants.h | 4 +- .../shaders/autogen/tables/VSMCopyPageDepth.h | 4 +- .../autogen/tables/VSMCopyPageDepthBatch.h | 4 +- .../shaders/autogen/tables/VSMDepthAnalysis.h | 4 +- .../autogen/tables/VSMDispatchCommandData.h | 4 +- .../autogen/tables/VSMDownsampleHiZBatch.h | 4 +- .../autogen/tables/VSMGatherDispatchData.h | 4 +- .../tables/VSMGatherDispatchMaterialData.h | 4 +- .../autogen/tables/VSMLevelDispatchInfo.h | 4 +- workdir/shaders/autogen/tables/VSMLighting.h | 4 +- workdir/shaders/autogen/tables/VSMPageBatch.h | 4 +- workdir/shaders/autogen/tables/VSMPageHiZ.h | 4 +- .../shaders/autogen/tables/VSMPageTableData.h | 4 +- .../tables/VSMScreenSpaceShadowParams.h | 4 +- .../autogen/tables/VSMSearchVerdictAppend.h | 4 +- workdir/shaders/autogen/tables/VSMSelectors.h | 4 +- .../shaders/autogen/tables/VSMShadowLookup.h | 4 +- .../autogen/tables/VSMShadowLookupData.h | 4 +- .../autogen/tables/VSMShadowResolveIO.h | 4 +- .../shaders/autogen/tables/VSMTileListRead.h | 4 +- .../shaders/autogen/tables/ViewportContext.h | 4 +- workdir/shaders/autogen/tables/VoxelCopy.h | 4 +- workdir/shaders/autogen/tables/VoxelDebug.h | 4 +- .../shaders/autogen/tables/VoxelGISelectors.h | 4 +- workdir/shaders/autogen/tables/VoxelInfo.h | 4 +- .../shaders/autogen/tables/VoxelLighting.h | 4 +- workdir/shaders/autogen/tables/VoxelMipMap.h | 4 +- workdir/shaders/autogen/tables/VoxelOutput.h | 4 +- workdir/shaders/autogen/tables/VoxelScreen.h | 4 +- .../autogen/tables/VoxelTilingParams.h | 4 +- workdir/shaders/autogen/tables/VoxelUpscale.h | 4 +- .../shaders/autogen/tables/VoxelVisibility.h | 4 +- workdir/shaders/autogen/tables/VoxelZero.h | 4 +- workdir/shaders/autogen/tables/Voxelization.h | 4 +- .../WorkGR_ClassifyPixels_NodeEmulation.h | 4 +- .../tables/WorkGR_Shadows_NodeEmulation.h | 4 +- .../shaders/autogen/tables/WorkGraphTest.h | 4 +- .../autogen/tables/mesh_vertex_input.h | 4 +- workdir/shaders/autogen/tables/node_data.h | 4 +- workdir/shaders/autogen/tables/vertex_input.h | 4 +- workdir/shaders/autogen/workgraph/WorkGR.h | 4 +- workdir/shaders/ddgi/ddgi_debug.hlsl | 4 +- workdir/shaders/ddgi/ddgi_indirect_debug.hlsl | 2 +- workdir/shaders/ddgi/ddgi_probe_convolve.hlsl | 6 +- .../ddgi/ddgi_probe_residency_mark.hlsl | 10 +- workdir/shaders/ddgi/ddgi_probe_select.hlsl | 2 +- workdir/shaders/ddgi/ddgi_probe_trace.hlsl | 10 +- workdir/shaders/ddgi/ddgi_sample.hlsl | 16 +- workdir/shaders/ddgi/octahedral.hlsl | 4 +- workdir/shaders/enums.h | 4 +- workdir/shaders/gbuffer/mesh_shader.hlsl | 4 +- .../gbuffer/normal_roughness_repack.hlsl | 2 +- .../materials/material_preview_3d.hlsl | 2 +- workdir/shaders/nrd/gbuffer_pack.hlsl | 8 +- workdir/shaders/nrd/sig_clear.hlsl | 2 +- .../shaders/nrd/sig_reblur_blur_specular.hlsl | 2 +- .../nrd/sig_reblur_historyfix_specular.hlsl | 2 +- ...reblur_hitdistreconstruction_specular.hlsl | 2 +- .../nrd/sig_reblur_postblur_ts0_specular.hlsl | 2 +- .../nrd/sig_reblur_postblur_ts1_specular.hlsl | 2 +- .../nrd/sig_reblur_prepass_specular.hlsl | 2 +- ..._reblur_temporalaccumulation_specular.hlsl | 2 +- ...reblur_temporalstabilization_specular.hlsl | 2 +- workdir/shaders/nrd/unpack_debug.hlsl | 2 +- workdir/shaders/postprocess/downsample.hlsl | 6 +- .../shaders/rtx/dispatch_rays_args_build.hlsl | 4 +- workdir/shaders/rtx/raytracing.hlsl | 32 +- workdir/shaders/rtx/rtx_combine.hlsl | 2 +- .../rtx/universal_material_raytracing.hlsl | 8 +- workdir/shaders/shadows/vsm/vsm.hlsl | 4 +- .../shadows/vsm/vsm_blocker_classify.hlsl | 2 +- .../shadows/vsm/vsm_blocker_search.hlsl | 2 +- .../shadows/vsm/vsm_debug_tile_overlay.hlsl | 8 +- .../shadows/vsm/vsm_gather_dispatch.hlsl | 6 +- .../shadows/vsm/vsm_hiz_downsample_batch.hlsl | 2 +- workdir/shaders/shadows/vsm/vsm_impl.hlsl | 4 +- .../shaders/shadows/vsm/vsm_impl_resolve.hlsl | 4 +- .../shadows/vsm/vsm_screen_space_shadow.hlsl | 4 +- .../shadows/vsm/vsm_shadow_resolve.hlsl | 10 +- workdir/shaders/voxelgi/voxel_lighting.hlsl | 2 +- workdir/shaders/voxelgi/voxel_screen.hlsl | 2 +- 1149 files changed, 6967 insertions(+), 6384 deletions(-) create mode 100644 .agents/skills/prism-regen/SKILL.md delete mode 100644 .agents/skills/sig-regen/SKILL.md create mode 100644 .claude/skills/prism-regen/SKILL.md delete mode 100644 .claude/skills/sig-regen/SKILL.md create mode 100644 generate_prism_parser.bat delete mode 100644 generate_sigs.bat create mode 100644 overview/Prism.txt rename sources/{SIGParser/.antlr/SIG.interp => Prism/.antlr/Prism.interp} (100%) rename sources/{SIGParser/.antlr/SIG.tokens => Prism/.antlr/Prism.tokens} (100%) create mode 100644 sources/Prism/.antlr/PrismBaseListener.cpp create mode 100644 sources/Prism/.antlr/PrismBaseListener.h create mode 100644 sources/Prism/.antlr/PrismBaseVisitor.cpp create mode 100644 sources/Prism/.antlr/PrismBaseVisitor.h rename sources/{SIGParser/.antlr/SIGLexer.cpp => Prism/.antlr/PrismLexer.cpp} (93%) rename sources/{SIGParser/.antlr/SIGLexer.h => Prism/.antlr/PrismLexer.h} (94%) rename sources/{SIGParser/.antlr/SIGLexer.interp => Prism/.antlr/PrismLexer.interp} (100%) rename sources/{SIGParser/.antlr/SIGLexer.tokens => Prism/.antlr/PrismLexer.tokens} (100%) create mode 100644 sources/Prism/.antlr/PrismListener.cpp create mode 100644 sources/Prism/.antlr/PrismListener.h rename sources/{SIGParser/.antlr/SIGParser.cpp => Prism/.antlr/PrismParser.cpp} (55%) rename sources/{SIGParser/.antlr/SIGParser.h => Prism/.antlr/PrismParser.h} (99%) create mode 100644 sources/Prism/.antlr/PrismVisitor.cpp create mode 100644 sources/Prism/.antlr/PrismVisitor.h rename sources/{SIGParser => Prism}/.antlr/antlr4-runtime.h (100%) rename sources/{SIGParser => Prism}/Defines.h (68%) rename sources/{SIGParser => Prism}/Diagnostics.h (100%) rename sources/{SIGParser => Prism}/LSP.cpp (98%) rename sources/{SIGParser => Prism}/LSP.h (65%) rename sources/{SIGParser => Prism}/Main.cpp (98%) rename sources/{SIGParser => Prism}/Parsed.cpp (99%) rename sources/{SIGParser => Prism}/Parsed.h (98%) rename sources/{SIGParser => Prism}/Parsing.cpp (87%) rename sources/{SIGParser => Prism}/Parsing.h (83%) rename sources/{SIGParser/SIG.g4 => Prism/Prism.g4} (97%) rename sources/{SIGParser => Prism}/REFACTOR_TODO.md (89%) rename sources/{SIGParser => Prism}/Validate.cpp (98%) rename sources/{SIGParser => Prism}/Validate.h (87%) rename sources/{SIGParser => Prism}/antlr-4.11.1-complete.jar (100%) rename sources/{SIGParser/sigs/AssetRenderer.sig => Prism/defs/AssetRenderer.prism} (97%) rename sources/{SIGParser/sigs/BlueNoise.sig => Prism/defs/BlueNoise.prism} (100%) rename sources/{SIGParser/sigs/DenoiserShadow.sig => Prism/defs/DenoiserShadow.prism} (100%) rename sources/{SIGParser/sigs/FSR.sig => Prism/defs/FSR.prism} (100%) rename sources/{SIGParser/sigs/FrameData.sig => Prism/defs/FrameData.prism} (96%) rename sources/{SIGParser/sigs/MipMapping.sig => Prism/defs/MipMapping.prism} (100%) rename sources/{SIGParser/sigs/SS_Shadow.sig => Prism/defs/SS_Shadow.prism} (100%) rename sources/{SIGParser/sigs/UpscalingDLSS.sig => Prism/defs/UpscalingDLSS.prism} (99%) rename sources/{SIGParser/sigs/UpscalingDLSSRR.sig => Prism/defs/UpscalingDLSSRR.prism} (96%) rename sources/{SIGParser/sigs/WorkGraph.sig => Prism/defs/WorkGraph.prism} (100%) rename sources/{SIGParser/sigs/brdf.sig => Prism/defs/brdf.prism} (100%) rename sources/{SIGParser/sigs/ddgi.sig => Prism/defs/ddgi.prism} (97%) rename sources/{SIGParser/sigs/defaultlayout.sig => Prism/defs/defaultlayout.prism} (96%) rename sources/{SIGParser/sigs/font_render.sig => Prism/defs/font_render.prism} (100%) rename sources/{SIGParser/sigs/helpers.sig => Prism/defs/helpers.prism} (100%) rename sources/{SIGParser/sigs/material.sig => Prism/defs/material.prism} (100%) rename sources/{SIGParser/sigs/material_preview.sig => Prism/defs/material_preview.prism} (96%) rename sources/{SIGParser/sigs/meshrender.sig => Prism/defs/meshrender.prism} (98%) rename sources/{SIGParser/sigs/nrd_sig_test.sig => Prism/defs/nrd_sig_test.prism} (98%) rename sources/{SIGParser/sigs/pssm.sig => Prism/defs/pssm.prism} (98%) rename sources/{SIGParser/sigs/raytracing.sig => Prism/defs/raytracing.prism} (95%) rename sources/{SIGParser/sigs/scene.sig => Prism/defs/scene.prism} (98%) rename sources/{SIGParser/sigs/sky.sig => Prism/defs/sky.prism} (100%) rename sources/{SIGParser/sigs/smaa.sig => Prism/defs/smaa.prism} (100%) rename sources/{SIGParser/sigs/stenciler.sig => Prism/defs/stenciler.prism} (100%) rename sources/{SIGParser/sigs/test.sig => Prism/defs/test.prism} (91%) rename sources/{SIGParser/sigs/ui.sig => Prism/defs/ui.prism} (100%) rename sources/{SIGParser/sigs/voxel.sig => Prism/defs/voxel.prism} (95%) rename sources/{SIGParser/sigs/vsm.sig => Prism/defs/vsm.prism} (97%) create mode 100644 sources/Prism/editor/PrismCommands.vsct rename sources/{SIGParser/editor/SigLanguageClient.cs => Prism/editor/PrismLanguageClient.cs} (71%) rename sources/{SIGParser/editor/SigPackage.cs => Prism/editor/PrismPackage.cs} (82%) rename sources/{SIGParser => Prism}/editor/gen_vs_extension.py (85%) rename sources/{SIGParser => Prism}/generate.bat (84%) rename sources/{SIGParser => Prism}/templates/cpp/autogen.jinja (93%) rename sources/{SIGParser => Prism}/templates/cpp/autogen_impl.jinja (88%) rename sources/{SIGParser => Prism}/templates/cpp/constants.jinja (74%) rename sources/{SIGParser => Prism}/templates/cpp/context_deps.jinja (95%) rename sources/{SIGParser => Prism}/templates/cpp/context_snapshot_cpp.jinja (96%) rename sources/{SIGParser => Prism}/templates/cpp/enums.jinja (91%) rename sources/{SIGParser => Prism}/templates/cpp/layout.jinja (90%) rename sources/{SIGParser => Prism}/templates/cpp/pass.jinja (98%) rename sources/{SIGParser => Prism}/templates/cpp/pass_defaults.jinja (95%) rename sources/{SIGParser => Prism}/templates/cpp/pass_defaults_cpp.jinja (90%) rename sources/{SIGParser => Prism}/templates/cpp/pass_enums.jinja (81%) rename sources/{SIGParser => Prism}/templates/cpp/pass_ids.jinja (75%) rename sources/{SIGParser => Prism}/templates/cpp/pass_view.jinja (83%) rename sources/{SIGParser => Prism}/templates/cpp/passes.jinja (86%) rename sources/{SIGParser => Prism}/templates/cpp/pipeline.jinja (98%) rename sources/{SIGParser => Prism}/templates/cpp/pso.jinja (96%) rename sources/{SIGParser => Prism}/templates/cpp/psos.jinja (94%) rename sources/{SIGParser => Prism}/templates/cpp/raygen_pass.jinja (81%) rename sources/{SIGParser => Prism}/templates/cpp/raytrace_pass.jinja (91%) rename sources/{SIGParser => Prism}/templates/cpp/resource_ids.jinja (83%) rename sources/{SIGParser => Prism}/templates/cpp/rt.jinja (93%) rename sources/{SIGParser => Prism}/templates/cpp/rtx_pso.jinja (88%) rename sources/{SIGParser => Prism}/templates/cpp/slot.jinja (88%) rename sources/{SIGParser => Prism}/templates/cpp/table.jinja (97%) rename sources/{SIGParser => Prism}/templates/cpp/workgraph_node_pso.jinja (89%) rename sources/{SIGParser => Prism}/templates/hlsl/enums.jinja (88%) rename sources/{SIGParser => Prism}/templates/hlsl/layout.jinja (89%) rename sources/{SIGParser => Prism}/templates/hlsl/nobind_table.jinja (92%) rename sources/{SIGParser => Prism}/templates/hlsl/pass.jinja (77%) rename sources/{SIGParser => Prism}/templates/hlsl/pso.jinja (73%) rename sources/{SIGParser => Prism}/templates/hlsl/rt.jinja (77%) rename sources/{SIGParser => Prism}/templates/hlsl/slot.jinja (91%) rename sources/{SIGParser => Prism}/templates/hlsl/table.jinja (95%) rename sources/{SIGParser => Prism}/templates/hlsl/workgraph_nodes.jinja (97%) delete mode 100644 sources/SIGParser/.antlr/SIGBaseListener.cpp delete mode 100644 sources/SIGParser/.antlr/SIGBaseListener.h delete mode 100644 sources/SIGParser/.antlr/SIGBaseVisitor.cpp delete mode 100644 sources/SIGParser/.antlr/SIGBaseVisitor.h delete mode 100644 sources/SIGParser/.antlr/SIGListener.cpp delete mode 100644 sources/SIGParser/.antlr/SIGListener.h delete mode 100644 sources/SIGParser/.antlr/SIGVisitor.cpp delete mode 100644 sources/SIGParser/.antlr/SIGVisitor.h delete mode 100644 sources/SIGParser/editor/SigCommands.vsct delete mode 100644 sources/SIGParser/output.txt diff --git a/.agents/skills/add-render-pass/SKILL.md b/.agents/skills/add-render-pass/SKILL.md index 89ab49cfb..26fd519f8 100644 --- a/.agents/skills/add-render-pass/SKILL.md +++ b/.agents/skills/add-render-pass/SKILL.md @@ -1,25 +1,25 @@ --- name: add-render-pass -description: Add a new render or compute pass to the FrameGraph end to end — the .sig PassNode and PSO declaration, code generation, the setup/render implementation, the HLSL shader, and pipeline registration. Use this skill whenever adding a new rendering effect, post-process, compute dispatch, shadow, or GBuffer stage, whenever a new PassNode or ComputePSO/GraphicsPSO is needed, or when an existing pass needs new resource reads/writes wired through the FrameGraph. Also use it when a newly added pass never executes, since that is usually a pipeline registration or setup-return problem rather than a bug in the render body. +description: Add a new render or compute pass to the FrameGraph end to end — the .prism PassNode and PSO declaration, code generation, the setup/render implementation, the HLSL shader, and pipeline registration. Use this skill whenever adding a new rendering effect, post-process, compute dispatch, shadow, or GBuffer stage, whenever a new PassNode or ComputePSO/GraphicsPSO is needed, or when an existing pass needs new resource reads/writes wired through the FrameGraph. Also use it when a newly added pass never executes, since that is usually a pipeline registration or setup-return problem rather than a bug in the render body. --- # Adding a FrameGraph pass -A pass is declared in a `.sig` file and implemented in C++, with the generator +A pass is declared in a `.prism` file and implemented in C++, with the generator producing the glue between them. Getting the declaration right matters more than the render body — the declaration is what the FrameGraph uses to schedule the pass and to compute its barriers, so a wrong read/write flag produces validation errors or corrupt results that look like shader bugs. -Read `sources/RenderSystem/Effects/Sky.cpp` alongside `sources/SIGParser/sigs/sky.sig` +Read `sources/RenderSystem/Effects/Sky.cpp` alongside `sources/Prism/defs/sky.prism` before starting. Between them they show both wiring styles, a graphics PSO and several compute PSOs, resource creation, and per-mip view handling — it is the best single reference in the tree. -## 1. Declare in a `.sig` file +## 1. Declare in a `.prism` file -Put the declaration in an existing `.sig` that matches the subsystem, or a new -one in `sources/SIGParser/sigs/`. +Put the declaration in an existing `.prism` that matches the subsystem, or a new +one in `sources/Prism/defs/`. **Binding struct** — the shader-visible parameters. `[Bind = DefaultLayout::InstanceN]` selects the root-signature slot; distinct structs bound in the same pass need @@ -75,7 +75,7 @@ resource; introducing a new spelling silently creates an unrelated resource. `PassDefault` specialization declaring `setup` and `render`, which you then define out-of-line. Without `[Static]` no such specialization exists and the pass must be wired at runtime by assigning `setup_func`/`render_func`. - See `sources/SIGParser/templates/cpp/pass_defaults.jinja` for the exact rule. + See `sources/Prism/templates/cpp/pass_defaults.jinja` for the exact rule. Choose `[Static]` when the pass is self-contained. Choose runtime wiring when the pass needs state owned by a C++ object — loaded textures, cached history @@ -83,7 +83,7 @@ buffers, persistent settings. ## 2. Regenerate -Use the `sig-regen` skill. In short: run the generator from `sources/SIGParser`, +Use the `prism-regen` skill. In short: run the generator from `sources/Prism`, then run `generate_project.bat` because a new `PassNode` and PSO create new files that the projects don't yet list. @@ -151,7 +151,7 @@ no D3D12 output at all. In that pass, use the owning `HAL::Texture` directly. Create the file the PSO's `compute =`/`vertex =`/`pixel =` string names under `workdir/shaders/`, with a function named by `[EntryPoint = ...]`. Include the -generated binding header so the struct layout stays in sync with the `.sig`. +generated binding header so the struct layout stays in sync with the `.prism`. ## 5. Register in a pipeline @@ -170,7 +170,7 @@ Pipeline AssetPipeline ``` Add it to every pipeline that should run it — `AssetPipeline` and the pipeline -in `test.sig` are separate graphs and adding to one does not affect the other. +in `test.prism` are separate graphs and adding to one does not affect the other. Then regenerate again, since the pipeline block changed. ## 6. Verify diff --git a/.agents/skills/prism-regen/SKILL.md b/.agents/skills/prism-regen/SKILL.md new file mode 100644 index 000000000..f96b9d197 --- /dev/null +++ b/.agents/skills/prism-regen/SKILL.md @@ -0,0 +1,82 @@ +--- +name: prism-regen +description: Regenerate C++ and HLSL code after editing any .prism file in sources/Prism/defs/. Use this skill whenever you add, edit, or remove a struct, ComputePSO, GraphicsPSO, PassNode, Pipeline entry or HLSL function in a .prism file, or whenever generated code under sources/HAL/autogen, sources/RenderSystem/FrameGraph/autogen, or workdir/shaders/autogen looks stale or out of sync with the .prism sources. Also use it when a build fails with unknown Slots::, PSOS::, or Passes:: identifiers, since that almost always means the .prism edit was never regenerated. +--- + +# Regenerating Prism code + +`.prism` files are the single source of truth for GPU/CPU shared structs, PSO +definitions, and FrameGraph pass declarations. Editing one changes nothing on +its own — the generated C++ and HLSL must be rebuilt from it. + +## The one thing that goes wrong + +`generate_prism_parser.bat` does **not** regenerate code from `.prism` files. It +runs ANTLR over `Prism.g4` to rebuild the *parser*, which is only needed when +the grammar itself changes. Running it after a `.prism` edit appears to succeed +and produces no useful change — which is exactly why it's the trap. + +The actual generator is `prismc.exe`, built by the `Prism` project. + +## Running the generator + +In Visual Studio with the Prism extension installed: **Tools → Regenerate Prism +code** (also on the Prism toolbar). It saves open `.prism` files, runs the +generator, and reports added/removed/modified files in the Output window's +"Prism" pane — including whether `generate_project.bat` is needed. + +From a shell, the working directory matters: the generator reads `defs/` and +writes to `../../sources/...` and `../../workdir/...` relative to it. + +```bash +cd sources/Prism && ../../bin/profile/prismc.exe +``` + +A `.prism` mistake makes the generator print `file(line,col): error: ...`, exit +with code 1 and write **nothing**; fix the reported lines and rerun. + +Prebuilt exes in different `bin/` configurations drift independently. If the +generator or templates changed since `bin/profile/prismc.exe` was built, rebuild +the `Prism` project (Profile) first — otherwise the output won't reflect those +changes. + +## Deciding whether the project needs regenerating too + +Sharpmake enumerates source files at generation time, so the `.vcxproj` files +list generated sources explicitly. Modifying the *contents* of an existing +generated file is invisible to the build system, but a **new** generated file +will not compile until the projects know about it. + +After running the generator, check whether the file set changed: + +```bash +git status --short sources/HAL/autogen sources/RenderSystem/FrameGraph/autogen workdir/shaders/autogen +``` + +Lines starting with `??` (untracked) or `D` (deleted) mean the file set changed +— run `generate_project.bat`. Only `M` lines means contents changed in place and +the existing projects already cover it. + +Adding a new `struct`, `ComputePSO`/`GraphicsPSO`, or `PassNode` usually creates +new files, so a new declaration generally does need the project regenerated. + +## Full sequence + +1. Edit the `.prism` file under `sources/Prism/defs/`. +2. Regenerate (Tools → Regenerate Prism code, or `cd sources/Prism && ../../bin/profile/prismc.exe`). +3. `git status --short` the three autogen directories. +4. If any file was added or removed, run `generate_project.bat` from the repo root. +5. Build, and confirm the new `Slots::`/`PSOS::`/`Passes::` names resolve. + +## Reporting back + +Say which `.prism` files changed, what the generator wrote, and — explicitly — +whether `generate_project.bat` was needed. That last point is what the next +person (or the next session) needs in order to trust the result, since a +missing project regeneration produces a confusing "identifier not found" error +far away from its cause. + +Never hand-edit files under the autogen directories. They carry a +DO-NOT-EDIT banner and the next generator run silently discards the changes. +If generated output is wrong, fix the `.prism` file or the Jinja template in +`sources/Prism/templates/`. diff --git a/.agents/skills/sig-regen/SKILL.md b/.agents/skills/sig-regen/SKILL.md deleted file mode 100644 index 2f8962b4d..000000000 --- a/.agents/skills/sig-regen/SKILL.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -name: sig-regen -description: Regenerate C++ and HLSL binding code after editing any .sig file in sources/SIGParser/sigs/. Use this skill whenever you add, edit, or remove a struct, ComputePSO, GraphicsPSO, PassNode, or Pipeline entry in a .sig file, or whenever generated code under sources/HAL/autogen, sources/RenderSystem/FrameGraph/autogen, or workdir/shaders/autogen looks stale or out of sync with the .sig sources. Also use it when a build fails with unknown Slots::, PSOS::, or Passes:: identifiers, since that almost always means the .sig edit was never regenerated. ---- - -# Regenerating SIG code - -`.sig` files are the single source of truth for GPU/CPU shared structs, PSO -definitions, and FrameGraph pass declarations. Editing one changes nothing on -its own — the generated C++ and HLSL must be rebuilt from it. - -## The one thing that goes wrong - -`generate_sigs.bat` does **not** regenerate code from `.sig` files. It runs -ANTLR over `SIG.g4` to rebuild the *parser grammar*, which is only needed when -the grammar itself changes. Running it after a `.sig` edit appears to succeed -and produces no useful change — which is exactly why it's the trap. - -The actual generator is `bin/debug/sigparser.exe`. - -## Running the generator - -The generator resolves every path relative to its working directory — -`sigs/` for input, `../../sources/...` and `../../workdir/...` for output (see -`sources/SIGParser/Main.cpp:9-13`). Run it anywhere else and it either finds no -input or writes to the wrong place, so the working directory is not incidental: - -```bash -cd sources/SIGParser && ../../bin/debug/sigparser.exe -``` - -If `bin/debug/sigparser.exe` is missing or older than the `.sig` edits and the -grammar or generator sources changed, build the `sigparser` project first — -otherwise you are regenerating with a stale generator and the output won't -reflect template changes. - -## Deciding whether the project needs regenerating too - -Sharpmake enumerates source files at generation time, so the `.vcxproj` files -list generated sources explicitly. Modifying the *contents* of an existing -generated file is invisible to the build system, but a **new** generated file -will not compile until the projects know about it. - -After running the generator, check whether the file set changed: - -```bash -git status --short sources/HAL/autogen sources/RenderSystem/FrameGraph/autogen workdir/shaders/autogen -``` - -Lines starting with `??` (untracked) or `D` (deleted) mean the file set changed -— run `generate_project.bat`. Only `M` lines means contents changed in place and -the existing projects already cover it. - -Adding a new `struct`, `ComputePSO`/`GraphicsPSO`, or `PassNode` usually creates -new files, so a new declaration generally does need the project regenerated. - -## Full sequence - -1. Edit the `.sig` file under `sources/SIGParser/sigs/`. -2. `cd sources/SIGParser && ../../bin/debug/sigparser.exe` -3. `git status --short` the three autogen directories. -4. If any file was added or removed, run `generate_project.bat` from the repo root. -5. Build, and confirm the new `Slots::`/`PSOS::`/`Passes::` names resolve. - -## Reporting back - -Say which `.sig` files changed, what the generator wrote, and — explicitly — -whether `generate_project.bat` was needed. That last point is what the next -person (or the next session) needs in order to trust the result, since a -missing project regeneration produces a confusing "identifier not found" error -far away from its cause. - -Never hand-edit files under the autogen directories. They carry a -DO-NOT-EDIT banner and the next generator run silently discards the changes. -If generated output is wrong, fix the `.sig` file or the Jinja template in -`sources/SIGParser/templates/`. diff --git a/.claude/skills/add-render-pass/SKILL.md b/.claude/skills/add-render-pass/SKILL.md index b0bb39fdc..3780503e3 100644 --- a/.claude/skills/add-render-pass/SKILL.md +++ b/.claude/skills/add-render-pass/SKILL.md @@ -1,25 +1,25 @@ --- name: add-render-pass -description: Add a new render or compute pass to the FrameGraph end to end — the .sig PassNode and PSO declaration, code generation, the setup/render implementation, the HLSL shader, and pipeline registration. Use this skill whenever adding a new rendering effect, post-process, compute dispatch, shadow, or GBuffer stage, whenever a new PassNode or ComputePSO/GraphicsPSO is needed, or when an existing pass needs new resource reads/writes wired through the FrameGraph. Also use it when a newly added pass never executes, since that is usually a pipeline registration or setup-return problem rather than a bug in the render body. +description: Add a new render or compute pass to the FrameGraph end to end — the .prism PassNode and PSO declaration, code generation, the setup/render implementation, the HLSL shader, and pipeline registration. Use this skill whenever adding a new rendering effect, post-process, compute dispatch, shadow, or GBuffer stage, whenever a new PassNode or ComputePSO/GraphicsPSO is needed, or when an existing pass needs new resource reads/writes wired through the FrameGraph. Also use it when a newly added pass never executes, since that is usually a pipeline registration or setup-return problem rather than a bug in the render body. --- # Adding a FrameGraph pass -A pass is declared in a `.sig` file and implemented in C++, with the generator +A pass is declared in a `.prism` file and implemented in C++, with the generator producing the glue between them. Getting the declaration right matters more than the render body — the declaration is what the FrameGraph uses to schedule the pass and to compute its barriers, so a wrong read/write flag produces validation errors or corrupt results that look like shader bugs. -Read `sources/RenderSystem/Effects/Sky.cpp` alongside `sources/SIGParser/sigs/sky.sig` +Read `sources/RenderSystem/Effects/Sky.cpp` alongside `sources/Prism/defs/sky.prism` before starting. Between them they show both wiring styles, a graphics PSO and several compute PSOs, resource creation, and per-mip view handling — it is the best single reference in the tree. -## 1. Declare in a `.sig` file +## 1. Declare in a `.prism` file -Put the declaration in an existing `.sig` that matches the subsystem, or a new -one in `sources/SIGParser/sigs/`. +Put the declaration in an existing `.prism` that matches the subsystem, or a new +one in `sources/Prism/defs/`. **Binding struct** — the shader-visible parameters. `[Bind = DefaultLayout::InstanceN]` selects the root-signature slot; distinct structs bound in the same pass need @@ -75,7 +75,7 @@ resource; introducing a new spelling silently creates an unrelated resource. `PassDefault` specialization declaring `setup` and `render`, which you then define out-of-line. Without `[Static]` no such specialization exists and the pass must be wired at runtime by assigning `setup_func`/`render_func`. - See `sources/SIGParser/templates/cpp/pass_defaults.jinja` for the exact rule. + See `sources/Prism/templates/cpp/pass_defaults.jinja` for the exact rule. Choose `[Static]` when the pass is self-contained. Choose runtime wiring when the pass needs state owned by a C++ object — loaded textures, cached history @@ -83,7 +83,7 @@ buffers, persistent settings. ## 2. Regenerate -Use the `sig-regen` skill. In short: run the generator from `sources/SIGParser`, +Use the `prism-regen` skill. In short: run the generator from `sources/Prism`, then run `generate_project.bat` because a new `PassNode` and PSO create new files that the projects don't yet list. @@ -151,7 +151,7 @@ no D3D12 output at all. In that pass, use the owning `HAL::Texture` directly. Create the file the PSO's `compute =`/`vertex =`/`pixel =` string names under `workdir/shaders/`, with a function named by `[EntryPoint = ...]`. Include the -generated binding header so the struct layout stays in sync with the `.sig`. +generated binding header so the struct layout stays in sync with the `.prism`. ## 5. Register in a pipeline @@ -170,7 +170,7 @@ Pipeline AssetPipeline ``` Add it to every pipeline that should run it — `AssetPipeline` and the pipeline -in `test.sig` are separate graphs and adding to one does not affect the other. +in `test.prism` are separate graphs and adding to one does not affect the other. Then regenerate again, since the pipeline block changed. ## 6. Verify diff --git a/.claude/skills/prism-regen/SKILL.md b/.claude/skills/prism-regen/SKILL.md new file mode 100644 index 000000000..f96b9d197 --- /dev/null +++ b/.claude/skills/prism-regen/SKILL.md @@ -0,0 +1,82 @@ +--- +name: prism-regen +description: Regenerate C++ and HLSL code after editing any .prism file in sources/Prism/defs/. Use this skill whenever you add, edit, or remove a struct, ComputePSO, GraphicsPSO, PassNode, Pipeline entry or HLSL function in a .prism file, or whenever generated code under sources/HAL/autogen, sources/RenderSystem/FrameGraph/autogen, or workdir/shaders/autogen looks stale or out of sync with the .prism sources. Also use it when a build fails with unknown Slots::, PSOS::, or Passes:: identifiers, since that almost always means the .prism edit was never regenerated. +--- + +# Regenerating Prism code + +`.prism` files are the single source of truth for GPU/CPU shared structs, PSO +definitions, and FrameGraph pass declarations. Editing one changes nothing on +its own — the generated C++ and HLSL must be rebuilt from it. + +## The one thing that goes wrong + +`generate_prism_parser.bat` does **not** regenerate code from `.prism` files. It +runs ANTLR over `Prism.g4` to rebuild the *parser*, which is only needed when +the grammar itself changes. Running it after a `.prism` edit appears to succeed +and produces no useful change — which is exactly why it's the trap. + +The actual generator is `prismc.exe`, built by the `Prism` project. + +## Running the generator + +In Visual Studio with the Prism extension installed: **Tools → Regenerate Prism +code** (also on the Prism toolbar). It saves open `.prism` files, runs the +generator, and reports added/removed/modified files in the Output window's +"Prism" pane — including whether `generate_project.bat` is needed. + +From a shell, the working directory matters: the generator reads `defs/` and +writes to `../../sources/...` and `../../workdir/...` relative to it. + +```bash +cd sources/Prism && ../../bin/profile/prismc.exe +``` + +A `.prism` mistake makes the generator print `file(line,col): error: ...`, exit +with code 1 and write **nothing**; fix the reported lines and rerun. + +Prebuilt exes in different `bin/` configurations drift independently. If the +generator or templates changed since `bin/profile/prismc.exe` was built, rebuild +the `Prism` project (Profile) first — otherwise the output won't reflect those +changes. + +## Deciding whether the project needs regenerating too + +Sharpmake enumerates source files at generation time, so the `.vcxproj` files +list generated sources explicitly. Modifying the *contents* of an existing +generated file is invisible to the build system, but a **new** generated file +will not compile until the projects know about it. + +After running the generator, check whether the file set changed: + +```bash +git status --short sources/HAL/autogen sources/RenderSystem/FrameGraph/autogen workdir/shaders/autogen +``` + +Lines starting with `??` (untracked) or `D` (deleted) mean the file set changed +— run `generate_project.bat`. Only `M` lines means contents changed in place and +the existing projects already cover it. + +Adding a new `struct`, `ComputePSO`/`GraphicsPSO`, or `PassNode` usually creates +new files, so a new declaration generally does need the project regenerated. + +## Full sequence + +1. Edit the `.prism` file under `sources/Prism/defs/`. +2. Regenerate (Tools → Regenerate Prism code, or `cd sources/Prism && ../../bin/profile/prismc.exe`). +3. `git status --short` the three autogen directories. +4. If any file was added or removed, run `generate_project.bat` from the repo root. +5. Build, and confirm the new `Slots::`/`PSOS::`/`Passes::` names resolve. + +## Reporting back + +Say which `.prism` files changed, what the generator wrote, and — explicitly — +whether `generate_project.bat` was needed. That last point is what the next +person (or the next session) needs in order to trust the result, since a +missing project regeneration produces a confusing "identifier not found" error +far away from its cause. + +Never hand-edit files under the autogen directories. They carry a +DO-NOT-EDIT banner and the next generator run silently discards the changes. +If generated output is wrong, fix the `.prism` file or the Jinja template in +`sources/Prism/templates/`. diff --git a/.claude/skills/sig-regen/SKILL.md b/.claude/skills/sig-regen/SKILL.md deleted file mode 100644 index 2f8962b4d..000000000 --- a/.claude/skills/sig-regen/SKILL.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -name: sig-regen -description: Regenerate C++ and HLSL binding code after editing any .sig file in sources/SIGParser/sigs/. Use this skill whenever you add, edit, or remove a struct, ComputePSO, GraphicsPSO, PassNode, or Pipeline entry in a .sig file, or whenever generated code under sources/HAL/autogen, sources/RenderSystem/FrameGraph/autogen, or workdir/shaders/autogen looks stale or out of sync with the .sig sources. Also use it when a build fails with unknown Slots::, PSOS::, or Passes:: identifiers, since that almost always means the .sig edit was never regenerated. ---- - -# Regenerating SIG code - -`.sig` files are the single source of truth for GPU/CPU shared structs, PSO -definitions, and FrameGraph pass declarations. Editing one changes nothing on -its own — the generated C++ and HLSL must be rebuilt from it. - -## The one thing that goes wrong - -`generate_sigs.bat` does **not** regenerate code from `.sig` files. It runs -ANTLR over `SIG.g4` to rebuild the *parser grammar*, which is only needed when -the grammar itself changes. Running it after a `.sig` edit appears to succeed -and produces no useful change — which is exactly why it's the trap. - -The actual generator is `bin/debug/sigparser.exe`. - -## Running the generator - -The generator resolves every path relative to its working directory — -`sigs/` for input, `../../sources/...` and `../../workdir/...` for output (see -`sources/SIGParser/Main.cpp:9-13`). Run it anywhere else and it either finds no -input or writes to the wrong place, so the working directory is not incidental: - -```bash -cd sources/SIGParser && ../../bin/debug/sigparser.exe -``` - -If `bin/debug/sigparser.exe` is missing or older than the `.sig` edits and the -grammar or generator sources changed, build the `sigparser` project first — -otherwise you are regenerating with a stale generator and the output won't -reflect template changes. - -## Deciding whether the project needs regenerating too - -Sharpmake enumerates source files at generation time, so the `.vcxproj` files -list generated sources explicitly. Modifying the *contents* of an existing -generated file is invisible to the build system, but a **new** generated file -will not compile until the projects know about it. - -After running the generator, check whether the file set changed: - -```bash -git status --short sources/HAL/autogen sources/RenderSystem/FrameGraph/autogen workdir/shaders/autogen -``` - -Lines starting with `??` (untracked) or `D` (deleted) mean the file set changed -— run `generate_project.bat`. Only `M` lines means contents changed in place and -the existing projects already cover it. - -Adding a new `struct`, `ComputePSO`/`GraphicsPSO`, or `PassNode` usually creates -new files, so a new declaration generally does need the project regenerated. - -## Full sequence - -1. Edit the `.sig` file under `sources/SIGParser/sigs/`. -2. `cd sources/SIGParser && ../../bin/debug/sigparser.exe` -3. `git status --short` the three autogen directories. -4. If any file was added or removed, run `generate_project.bat` from the repo root. -5. Build, and confirm the new `Slots::`/`PSOS::`/`Passes::` names resolve. - -## Reporting back - -Say which `.sig` files changed, what the generator wrote, and — explicitly — -whether `generate_project.bat` was needed. That last point is what the next -person (or the next session) needs in order to trust the result, since a -missing project regeneration produces a confusing "identifier not found" error -far away from its cause. - -Never hand-edit files under the autogen directories. They carry a -DO-NOT-EDIT banner and the next generator run silently discards the changes. -If generated output is wrong, fix the `.sig` file or the Jinja template in -`sources/SIGParser/templates/`. diff --git a/AGENTS.md b/AGENTS.md index 1671b3526..7f1b27a39 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -16,9 +16,12 @@ setup.bat # Init Sharpmake submodule + build it, then generates VS proj generate_project.bat ``` -### Regenerate SIG parser (after changing .sig files or SIG.g4 grammar) +### Regenerate code from .prism files +Tools → Regenerate Prism code in VS (Prism extension), or run `bin/profile/prismc.exe` from `sources/Prism/`. + +### Regenerate the Prism parser (only after changing the Prism.g4 grammar) ```bat -generate_sigs.bat +generate_prism_parser.bat ``` ### Build @@ -42,8 +45,8 @@ Each layer has a `Defines.h` that chains upward (e.g. `RenderSystem/Defines.h` i ### C++ Modules (.ixx) The codebase uses **C++23 modules** (`.ixx` files) extensively. Each subsystem exposes a module interface — for example `HAL.Device.ixx` exports `module HAL:Device`. Headers (`.h`) are used for things that can't be modules (forced includes, third-party interop). -### SIG System -`.sig` files define shared GPU/CPU data structures and resource bindings. `SIGParser` (an ANTLR4-based tool) parses them and generates HLSL and C++ binding code. SIG files live in `sources/SIGParser/sigs/`. Generated output goes to `sources/HAL/SIG/autogen/` and `sources/RenderSystem/FrameGraph/autogen/`. +### Prism +Prism is the engine's declaration language: `.prism` files in `sources/Prism/defs/` declare shared GPU/CPU structs and their resource bindings, PSOs, raytracing PSOs, FrameGraph passes, pipelines, enums, constants and HLSL helper functions. `prismc` (an ANTLR4-based compiler, `sources/Prism/`) generates HLSL and C++ from them into `sources/HAL/autogen/`, `sources/RenderSystem/FrameGraph/autogen/` and `workdir/shaders/autogen/`. The language was called SIG (shader input groups) before it grew beyond bindings; the engine-side binding code keeps that name (`HAL/SIG/`, `SlotID`, `Table::`). ### FrameGraph The `RenderSystem/FrameGraph` subsystem manages render pass scheduling, automatic resource transitions, and async compute. Render passes declare their resource reads/writes; the FrameGraph resolves barriers and execution order. diff --git a/CLAUDE.md b/CLAUDE.md index 69faadc60..9e3bc1184 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,9 +16,12 @@ setup.bat # Init Sharpmake submodule + build it, then generates VS proj generate_project.bat ``` -### Regenerate SIG parser (after changing .sig files or SIG.g4 grammar) +### Regenerate code from .prism files +Tools → Regenerate Prism code in VS (Prism extension), or run `bin/profile/prismc.exe` from `sources/Prism/`. + +### Regenerate the Prism parser (only after changing the Prism.g4 grammar) ```bat -generate_sigs.bat +generate_prism_parser.bat ``` ### Build @@ -42,8 +45,8 @@ Each layer has a `Defines.h` that chains upward (e.g. `RenderSystem/Defines.h` i ### C++ Modules (.ixx) The codebase uses **C++23 modules** (`.ixx` files) extensively. Each subsystem exposes a module interface — for example `HAL.Device.ixx` exports `module HAL:Device`. Headers (`.h`) are used for things that can't be modules (forced includes, third-party interop). -### SIG System -`.sig` files define shared GPU/CPU data structures and resource bindings. `SIGParser` (an ANTLR4-based tool) parses them and generates HLSL and C++ binding code. SIG files live in `sources/SIGParser/sigs/`. Generated output goes to `sources/HAL/SIG/autogen/` and `sources/RenderSystem/FrameGraph/autogen/`. +### Prism +Prism is the engine's declaration language: `.prism` files in `sources/Prism/defs/` declare shared GPU/CPU structs and their resource bindings, PSOs, raytracing PSOs, FrameGraph passes, pipelines, enums, constants and HLSL helper functions. `prismc` (an ANTLR4-based compiler, `sources/Prism/`) generates HLSL and C++ from them into `sources/HAL/autogen/`, `sources/RenderSystem/FrameGraph/autogen/` and `workdir/shaders/autogen/`. The language was called SIG (shader input groups) before it grew beyond bindings; the engine-side binding code keeps that name (`HAL/SIG/`, `SlotID`, `Table::`). ### FrameGraph The `RenderSystem/FrameGraph` subsystem manages render pass scheduling, automatic resource transitions, and async compute. Render passes declare their resource reads/writes; the FrameGraph resolves barriers and execution order. diff --git a/README.md b/README.md index c85d91b44..bd7dfcb75 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ - Runtime-tunable properties (`Variable`) with an in-app debug panel - CPU/GPU profiling (scoped `PROFILE`/`PROFILE_GPU` markers) - FrameGraph live debugger: pass/resource inspector, GPU pass timeline with barrier visualization, and a pannable/zoomable resource preview (2D/array/3D/cube textures and buffers) -- SIG shader-binding code generation (ANTLR4-driven, generates HLSL + C++ from a shared `.sig` DSL) +- Prism, a declaration language for GPU/CPU structs, bindings, PSOs and FrameGraph passes (ANTLR4-driven `prismc` generates HLSL + C++ from `.prism` files), with a Visual Studio extension for highlighting, live diagnostics and navigation ## Build system @@ -62,10 +62,16 @@ ## Code generation -Large parts of the engine are generated rather than hand-written, and live under `autogen/` directories that are checked in but should not be edited by hand: -- **SIG → HLSL/C++**: `sources/SIGParser` (ANTLR4 grammar `SIG.g4`) parses `.sig` files into shared GPU/CPU structs and resource-binding tables, emitting HLSL and C++ into `sources/HAL/SIG/autogen/` and `sources/HAL/autogen/` (binding tables, PSOs, enums) -- **FrameGraph passes**: pass declarations, resource IDs, and context plumbing are generated into `sources/RenderSystem/FrameGraph/autogen/` (`pass_ids.h`, `resource_ids.h`, `pass_defaults.*`, `context_snapshot.cpp`, per-pass headers under `autogen/pass/`) -- **Work Graph nodes**: PSOs for DX12 Work Graph nodes are generated from Jinja templates (`workgraph_node_pso.jinja`, `workgraph_nodes.jinja`) +Large parts of the engine are generated rather than hand-written. The source of truth is **Prism**, the engine's declaration language: `.prism` files in `sources/Prism/defs/` declare GPU/CPU shared structs and their slot bindings, root layouts, graphics/compute/raytracing/work-graph PSOs, FrameGraph passes and pipelines, enums, constants and HLSL helper functions. The `prismc` compiler (`sources/Prism/`, ANTLR4 grammar `Prism.g4`, Jinja2 templates) validates them and generates, into `autogen/` directories that are checked in but never edited by hand: +- **HAL** (`sources/HAL/autogen/`): binding tables and slots, root layouts, PSOs with permutation keys, raytracing PSOs, enums, constants +- **FrameGraph** (`sources/RenderSystem/FrameGraph/autogen/`): per-pass headers with generated setup (resource creation/needs, enable conditions), pipelines, `pass_ids.h`, `resource_ids.h`, `pass_defaults.*`, context dependency tables +- **HLSL** (`workdir/shaders/autogen/`): the matching shader-side structs, layouts, raytracing and work-graph node headers + +Regenerate after editing a `.prism` file with **Tools → Regenerate Prism code** in Visual Studio, or `cd sources/Prism && ../../bin/profile/prismc.exe`; run `generate_project.bat` when generated files were added or removed. A mistake in a `.prism` file stops generation with `file(line,col): error:` messages and writes nothing. + +The Visual Studio extension (`bin/editor/prism.vsix`, built by `sources/Prism/editor/gen_vs_extension.py`) adds highlighting, live errors with quick fixes, go-to-definition, hover, completion, outline and the regenerate command. + +Language reference for developers: [`overview/Prism.txt`](overview/Prism.txt). ![img](https://cheater.dev/Spectrum.png) https://cheater.dev diff --git a/generate_prism_parser.bat b/generate_prism_parser.bat new file mode 100644 index 000000000..10a6a79f7 --- /dev/null +++ b/generate_prism_parser.bat @@ -0,0 +1,4 @@ +REM Regenerates the ANTLR parser from sources/Prism/Prism.g4 (only needed after a grammar change). +REM This does NOT regenerate code from .prism files: that is prismc.exe, or Tools > Regenerate Prism code in VS. +SET CLASSPATH=%CD%\sources\Prism\antlr-4.11.1-complete.jar;%CLASSPATH% +java org.antlr.v4.Tool sources/Prism/Prism.g4 -o sources/Prism/.antlr/ -listener -visitor diff --git a/generate_sigs.bat b/generate_sigs.bat deleted file mode 100644 index 905fa76a6..000000000 --- a/generate_sigs.bat +++ /dev/null @@ -1,2 +0,0 @@ -SET CLASSPATH=%CD%\sources\SIGParser\antlr-4.11.1-complete.jar;%CLASSPATH% -java org.antlr.v4.Tool sources/SIGParser/SIG.g4 -o sources/SIGParser/.antlr/ -listener -visitor \ No newline at end of file diff --git a/main.sharpmake.cs b/main.sharpmake.cs index 83ba883c1..83bb275bf 100644 --- a/main.sharpmake.cs +++ b/main.sharpmake.cs @@ -53,7 +53,7 @@ public Common() : base(typeof(CustomTarget)) { - SourceFilesExtensions.Add(".sig"); + SourceFilesExtensions.Add(".prism"); SourceFilesExtensions.Add(".hlsl"); SourceFilesExtensions.Add(".ixx"); SourceFilesExtensions.Add(".g4"); @@ -414,12 +414,12 @@ public override void ConfigureAll(Configuration conf, CustomTarget target) } [Sharpmake.Generate] - public class SIGParser : Application + public class Prism : Application { - public SIGParser() + public Prism() { - SourceRootPath = @"[project.SharpmakeCsPath]\sources\SIGParser"; - AssemblyName = "SIGParser"; + SourceRootPath = @"[project.SharpmakeCsPath]\sources\Prism"; + AssemblyName = "Prism"; } public override void ConfigureAll(Configuration conf, CustomTarget target) @@ -427,14 +427,16 @@ public override void ConfigureAll(Configuration conf, CustomTarget target) base.ConfigureAll(conf, target); conf.Options.Remove(Options.Vc.Linker.SubSystem.Windows); conf.Options.Add(Options.Vc.General.CharacterSet.Unicode); - conf.Options.Remove(Options.Vc.General.WarningLevel.Level3); // hate warnings, love errors + conf.Options.Remove(Options.Vc.General.WarningLevel.Level3); // hate warnings, love errors conf.Options.Add(Options.Vc.General.WarningLevel.Level0); // hate warnings, love errors // conf.Options.Remove(Options.Vc.Compiler.CppLanguageStandard.Latest); // conf.Options.Add(Options.Vc.Compiler.CppLanguageStandard.CPP14); + // "Prism compiler"; the editor extension and docs refer to prismc.exe. + conf.TargetFileName = "prismc"; conf.VcxprojUserFile = new Project.Configuration.VcxprojUserFileSettings(); - conf.VcxprojUserFile.LocalDebuggerWorkingDirectory = @"[project.SharpmakeCsPath]\sources\SIGParser"; + conf.VcxprojUserFile.LocalDebuggerWorkingDirectory = @"[project.SharpmakeCsPath]\sources\Prism"; conf.AddPublicDependency(target); } @@ -559,7 +561,7 @@ public void ConfigureAll(Configuration conf, CustomTarget target) conf.Name = platformName; conf.AddProject(target); - conf.AddProject(target); + conf.AddProject(target); conf.AddProject(target); conf.AddProject(target); } diff --git a/overview/Barriers.txt b/overview/Barriers.txt index eb6412a47..0f3d46567 100644 --- a/overview/Barriers.txt +++ b/overview/Barriers.txt @@ -251,10 +251,10 @@ something it does not declare. ================================================================================ - [Barrier = ALL] — SIG ANNOTATION + [Barrier = ALL] — PRISM ANNOTATION ================================================================================ -A .sig table member may be declared: +A .prism table member may be declared: [Barrier = ALL] RWTexture2DArray dst_mip; @@ -272,8 +272,8 @@ Chain: -> records OperationUsage(ALL_SUBRESOURCES, state) instead of the view. No grammar change was needed: value_declaration already accepts option_block, and -options are exposed to Jinja generically. Regenerate with bin/debug/sigparser.exe -from sources/SIGParser — generate_sigs.bat only rebuilds the ANTLR grammar. +options are exposed to Jinja generically. Regenerate with bin/debug/prismc.exe +from sources/Prism — generate_prism_parser.bat only rebuilds the ANTLR grammar. ================================================================================ diff --git a/overview/HAL.txt b/overview/HAL.txt index 6459c32b2..c98d2c4f0 100644 --- a/overview/HAL.txt +++ b/overview/HAL.txt @@ -479,7 +479,7 @@ DebugLogStrings (in-memory registry, id -> format string) happen -- the shader had to compile to run) falls back to raw id + args -SIG side (sources/SIGParser/sigs/defaultlayout.sig): +Prism side (sources/Prism/defs/defaultlayout.prism): DebugStruct { uint format_id; uint4 args; } DebugInfo [Bind = FrameLayout::DebugInfo] RWStructuredBuffer debug -- 64-entry ring diff --git a/overview/Prism.txt b/overview/Prism.txt new file mode 100644 index 000000000..67504cba2 --- /dev/null +++ b/overview/Prism.txt @@ -0,0 +1,568 @@ +================================================================================ + PRISM — DECLARATION LANGUAGE AND CODE GENERATOR + Developer reference: what you can declare, what it generates, how to use it +================================================================================ + +Prism is Spectrum's declaration language. A .prism file describes things that +must agree between the GPU and the CPU, or that are pure boilerplate to write +by hand: + + - GPU/CPU shared structs and how they bind to root-signature slots + - root layouts (slots and static samplers) + - graphics, compute, raytracing and work-graph pipeline state objects + - FrameGraph passes: their resources, how those are created/read/written, + and when the pass runs + - pipelines (ordered pass lists, with async-compute placement) + - enums, constants and HLSL helper functions shared by those declarations + +`prismc` compiles every .prism file into C++ modules/headers and HLSL headers. +You write the declaration once; the C++ binding code, the HLSL struct, the PSO +setup, the FrameGraph setup() body and the ID tables all follow from it. + +History: the language started as "SIG" (shader input groups, after Ubisoft's +talk on binding shader inputs in groups). It grew well beyond bindings and was +renamed Prism. The engine-side binding code keeps the old name — HAL/SIG/, +`import :SIG;`, SlotID, Table:: — because that part still is shader input +groups. + + +-------------------------------------------------------------------------------- + WHERE THINGS ARE +-------------------------------------------------------------------------------- + + sources/Prism/defs/*.prism the declarations (one file per subsystem) + sources/Prism/Prism.g4 ANTLR grammar + sources/Prism/templates/ Jinja templates: cpp/ and hlsl/ output + sources/Prism/Main.cpp generator: parse, validate, render templates + sources/Prism/Validate.cpp every semantic check (and the option lists) + sources/Prism/LSP.cpp language server (prismc --lsp) + sources/Prism/editor/ Visual Studio extension (built by a script) + sources/Prism/REFACTOR_TODO.md known issues and planned work + + bin/profile/prismc.exe the compiler (Sharpmake project "Prism") + bin/editor/prism.vsix the Visual Studio extension + +Generated output (checked in, never edited by hand — every file carries a +DO-NOT-EDIT banner and is overwritten on the next run): + + sources/HAL/autogen/ C++: tables, slots, layouts, PSOs, + RTX PSOs, enums, Constants.ixx, + autogen.ixx (the HAL:Autogen module) + sources/RenderSystem/FrameGraph/autogen/ C++: per-pass headers (pass/*.h), + pipelines (*.pipeline.h), + pass_defaults.h/.cpp, resource_ids.h, + pass_ids.h, context_deps.h, + context_snapshot.cpp, passes.ixx + workdir/shaders/autogen/ HLSL: tables, layouts, RTX passes, + work-graph node macros + workdir/shaders/enums.h HLSL enums + + +-------------------------------------------------------------------------------- + WORKFLOW +-------------------------------------------------------------------------------- + +1. Edit a .prism file in sources/Prism/defs/. +2. Regenerate: + - Visual Studio: Tools > Regenerate Prism code (or the Prism toolbar, + View > Toolbars > Prism). Saves open .prism files first; the Output + window's "Prism" pane lists every file added/removed/modified. + - Shell: cd sources/Prism && ../../bin/profile/prismc.exe + (the working directory matters: it reads defs/ and writes ../../...) +3. If files were ADDED or REMOVED, run generate_project.bat — Sharpmake lists + generated files explicitly, so a new one won't compile until the projects + know about it. (The VS button offers to do this for you.) Content-only + changes need nothing. +4. Build. + +prismc refuses to write anything if any .prism file has an error. Errors are +printed as `file(line,col): error: message` (clickable in the VS Output +window) and the exit code is 1. Many come with a suggestion: + ddgi.prism(515,2): error: unknown option [SetupConditon] on PassNode + 'DDGIProbeSelect'; did you mean 'SetupCondition'? + +generate_prism_parser.bat is NOT a regeneration step — it rebuilds the ANTLR +parser from Prism.g4 and is only needed after a grammar change. + + +-------------------------------------------------------------------------------- + LANGUAGE BASICS +-------------------------------------------------------------------------------- + +Comments # to end of line. (Inside HLSL function bodies and %{ }% + blocks the text is HLSL, so use // there — a stray `# note` + there is reported as an error.) + +Declarations Name [: Parent, ...] { body } + struct, layout, enum, ComputePSO, GraphicsPSO, WorkgraphPSO, + RaytracePSO, RaytraceRaygen, RaytracePass, PassNode, PassView, + Pipeline, rt, plus top-level `const`. + +Options [Name] or [Name = value], stackable: [A] [B = 1] or [A, B = 1]. + They attach to the declaration or statement that follows. + Every option name is checked against a per-kind list — an + unknown or misspelled option is an error, never silently + ignored. + +Option values + literal [Size = 128] [MipCount = 1] + name [Format = R16G16B16A16_FLOAT] [EntryPoint = CS] + Owner::name [Size = ViewportContext::frame_size] + [Bind = DefaultLayout::Instance0] + flag set [Always = UnorderedAccess | Static] + list [Write = {albedo, normals}] + raw C++ (backticks) [Size = `(size_t)Constants::DDGI_ProbeCount * 4`] + Pasted verbatim into generated C++. Escape hatch only: + Prism can't check it or track what it reads. + condition see CONDITIONS below + +Types (fields) HLSL scalars/vectors/matrices (uint, float3, float4x4, int2, + float16_t2 ...), resource types (Texture2D, + RWStructuredBuffer, RaytracingAccelerationStructure ...), + other Prism structs by name, enums by name. + Arrays: `T name[4];` fixed, `T name[];` bindless. + + +-------------------------------------------------------------------------------- + struct — GPU/CPU SHARED DATA AND BINDINGS +-------------------------------------------------------------------------------- + + [Bind = DefaultLayout::Instance0] + struct VoxelTilingParams + { + uint4 voxels_per_tile; + StructuredBuffer tiles; + + uint3 get_voxel_pos(uint3 dispatchID) + { + uint tile_index = dispatchID.x / voxels_per_tile.x; + return GetTiles()[tile_index] * voxels_per_tile.xyz; + } + } + +Generates a C++ Table::VoxelTilingParams (fields, Get() accessors, +compile() into the bound slot) and a matching HLSL struct with Get() +accessors. Fields of another struct type nest; `struct B : A` inherits A's +fields. + +Struct options + [Bind = Layout::slot] bind to that root-signature slot (Slots::Name in + C++). Two structs on the SAME slot overwrite each + other within one draw/dispatch — give each struct + used together its own InstanceN slot. + [nobind] not bound to a slot: a plain data type (payloads, + records, nested helpers). C++ is still generated + unless [shader_only]. + [shader_only] no C++ table is generated (HLSL-side only). + [RenderTarget] a render-target set: fields are + RenderTarget/DepthStencil; also generates RT::X. + [IndirectCommand] layout of an ExecuteIndirect argument record. + [raypayload] DXR payload struct; fields need access qualifiers: + [read = {anyhit,closesthit,miss,caller}] + [write = {anyhit,closesthit,miss,caller}] + [Template = T] a C++/HLSL template struct parameterised on T. + [serialize] with [RenderTarget]: generates serialization of the + set's constant/struct members. + +Field options + [dynamic] variable-size CPU-filled data (DynamicData). + [Auto] if left unassigned, binds a shared null descriptor + instead of descriptor 0. + [Barrier = ALL] binding records a whole-resource use instead of the + view's own mip/array range (same layout, different + barrier scope). + [DispatchSize] HLSL SV_DispatchGrid (work-graph records). + read / write DXR payload access qualifiers (see [raypayload]). + +HLSL functions + A function inside a struct body is written out into the struct's generated + HLSL, so shaders can call it as a member: `voxels.get_voxel_pos(id)`. It + can use the struct's fields and Get() accessors directly. Overloads + are allowed. Only the signature is parsed; the body is HLSL, so it is only + checked when the shader compiles. + [HLSL] emit into HLSL — the default, may be omitted. + [CPP] emit into the C++ struct as well: designed, NOT implemented yet + (currently reported as an unknown option). + %{ ... }% is the older raw-HLSL block with the same effect; it still + works, but prefer function members (they take options, show in the + outline, and support go-to-definition and hover). + + +-------------------------------------------------------------------------------- + layout, enum, const +-------------------------------------------------------------------------------- + + layout FrameLayout + { + slot CameraData; + slot SceneData; + Sampler linearSampler = SamplerLinearWrapDesc; + } + layout DefaultLayout : FrameLayout { slot Instance0; ... } + +A layout is a root signature: its slots (which structs bind to with +[Bind = Layout::slot]) and static samplers. `: Parent` inherits the parent's +slots first. Generates Layouts::Name, SlotID values, and HLSL layout headers. + + enum ShadowSource { VSM; RTXReference; } + +Shared C++ (enums.ixx) and HLSL (enums.h) enum. Usable as a field type and +in conditions (ShadowSource::VSM). + + const DDGI_CascadeCount = 5; + const WG_TileSection = `8u + 256u * 256u * sizeof(Table::TileRecord)`; + +A named constant in C++ namespace Constants (Constants.ixx), in declaration +order, so a later raw value may reference an earlier one. + + +-------------------------------------------------------------------------------- + ComputePSO / GraphicsPSO +-------------------------------------------------------------------------------- + + ComputePSO MipMapping + { + root = DefaultLayout; + + [EntryPoint = CS] + compute = "postprocess/generate_mips.hlsl"; + + [rename = NON_POWER_OF_TWO] + [CS] + define NonPowerOfTwo = {0,1,2,3}; + } + + GraphicsPSO GBufferDraw + { + root = DefaultLayout; + [EntryPoint = VS] mesh = "gbuffer/mesh_shader.hlsl"; + [EntryPoint = AS] amplification = "gbuffer/mesh_shader.hlsl"; + rtv = { R8G8B8A8_UNORM, R8G8B8A8_UNORM, R16G16_FLOAT }; + ds = D32_FLOAT; + cull = None; + } + +Generates PSOS::Name with a Keys struct (one member per define) and the +code that fills in a SimplePSO, and registers the PSO in the PSO enum. + +root = Layout the root signature to use. + +Shaders = "path.hlsl"; path relative to workdir/shaders, extension + included. The file must exist (checked). Stages: compute, vertex, + pixel, geometry, hull, domain, mesh, amplification. + Options: [EntryPoint = fn] (required), [Enable16bits] (FP16), + [Erase] (remove a stage inherited from a parent PSO; used + with the sentinel `pixel = null;`). + +Defines `define Name;` is an on/off permutation key. + `define Name = {0,1,2,3};` has one variant per listed value. + Each define becomes a member of PSOS::Name::Keys; the runtime picks + (and caches) the variant for the key values it's given. + Options: [CS]/[PS]/[VS]/[GS]/[HS]/[MS]/[AS] — the stages that see + the define; [rename = MACRO] — HLSL macro name (defaults to + the define's name); [type = Format] — the key holds that + type instead of int; [indirect] — C++ selects the variant + by index into the listed values instead of by the value. + +Graphics-only + rtv = { formats... }; render-target formats; an entry may name a define, + so the format becomes part of the key. + blend = { modes... }; HAL::Blends per render target. + ds, cull, depth_func, depth_write, enable_depth, depth_bias, + depth_bias_clamp, slope_scaled_depth_bias, conservative, topology, + enable_stencil, stencil_func, stencil_pass_op, stencil_read_mask, + stencil_write_mask fixed-function state (HAL enums/values). + +Options on the PSO: [Template] (generated only as a base for others, not +registered), [ExcludeVulkan] (D3D12 only). Inheritance: `ComputePSO B : A`. + + +-------------------------------------------------------------------------------- + RaytracePSO / RaytraceRaygen / RaytracePass +-------------------------------------------------------------------------------- + + RaytracePSO MainRTX { root = DefaultLayout; } + + [Bind = MainRTX] + RaytraceRaygen Shadow + { + [EntryPoint = ShadowRaygenShader] + raygen = "rtx/raytracing.hlsl"; + } + + [Bind = MainRTX] + RaytracePass ColorPass + { + [EntryPoint = MyMissShader] miss = "rtx/raytracing.hlsl"; + [EntryPoint = MyClosestHitShader] closest_hit = none; + [EntryPoint = MyAnyHitShader] any_hit = none; + payload = RayPayload; + local = MaterialInfo; + per_material = true; + } + +A RaytracePSO collects every raygen and pass whose [Bind] names it (required, +and checked). Raygens/passes get their ::ID from their position within that +PSO, across all .prism files, so they can live in any file. +`closest_hit = none;` / `any_hit = none;` declare a per-material hit shader +(compiled per material rather than from one file). Pass params: payload +(the [raypayload] struct), local (local root-signature struct), +per_material, recursion_depth. + + +-------------------------------------------------------------------------------- + WorkgraphPSO +-------------------------------------------------------------------------------- + + [ExcludeVulkan] WorkgraphPSO WorkGR + { + root = DefaultLayout; + shader = "dev/workgraph_test.hlsl"; + + Node ClassifyPixels_Node + { + launch = broadcasting; + entry = true; + num_threads = { 64, 1, 1 }; + max_dispatch_grid = { 256, 64, 64 }; + input = GraphInput; + [MaxRecords = 64] + NodeOutput TileRecord Shadows_Node; + } + Node Shadows_Node { launch = thread; input = TileRecord; } + } + +Work graphs run through the emulation path: each node becomes its own +compute PSO (PSOS::Graph_Node) plus HLSL WG_* macros. Node params: launch, +entry, num_threads, max_dispatch_grid, input. Outputs: NodeOutput +, with [MaxRecords = N]. + + +-------------------------------------------------------------------------------- + PassNode — FRAMEGRAPH PASSES +-------------------------------------------------------------------------------- + + [SetupCondition = DDGISelectors::enabled] + [Compute] [Multiple = 5] + PassNode DDGIProbeSelect + { + [Always = UnorderedAccess | Static] + [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] + [Optional = data.pass_index == 0] + StructuredBuffer DDGI_Probes; + + [Always = Read] Texture GBuffer_Depth; + [Write] Texture ResultTexture; + } + +Each field is a FrameGraph resource, named by its field name — the same name +in any pass is the same resource (ResourceID::Name). Field types are +FrameGraph handler types: Texture, TextureCube, Texture3D, +StructuredBuffer, FormattedBuffer, ByteAdressBuffer (spelled that way in +FrameGraph.Base.ixx), or a PassView name (a group of fields). A field of type +int/uint/bool/float is plain per-frame CPU state instead, not a resource. + +Generates Passes::Name { Context with a handle per field, flags, ID, and a +generated setup that performs every need()/create() below }. + +Field options + [Always = Flags] need() the resource with those ResourceFlags every + frame the pass runs (Read, UnorderedAccess, CopyDest, + RenderTarget, DepthStencil, Static, Required, + ExclusiveRead ...). A write flag makes it a write. + [Size = ...] with [Always], CREATE the resource instead of just + needing it. Literal N (N×N texture or N-element + buffer), Owner::field (read from that context each + frame, e.g. ViewportContext::frame_size) or backticks. + [Format = F] creation format (HAL::Format); with [Always], also + means create. + [MipCount = N], [ArrayCount = N] + creation mip/array counts. + [Write] this pass writes the field (explicit, without + [Always]). On a PassView-typed field: [Write] writes + the whole group, [Write = {a, b}] writes those leaves. + [Optional = cond] the need()/create() only happens when cond is true + (see CONDITIONS). + [Recreate = NewName] after this pass, the resource continues as a new + version called NewName (a separate ResourceID) — for + in-place update chains. [RecreateFlags = Flags] gives + the new version's flags. + [PrevFor = X] this field is last frame's copy of resource X (a + history link that survives resizes). + [SkipEnablement] appended to [Always]'s flags + (ResourceFlags::SkipEnablement). + +Pass options + [Compute] may run on a compute queue (actually does only when + the pipeline entry says [Async]). + [Required] PassFlags::Required. + [Multiple = N] N instances of the pass (Names[N], per-instance + render_funcs); each instance gets data.pass_index. + [Static] render() is a hand-written free function, + PassDefault::render (declared in + pass_defaults.h); the pipeline calls it instead of + the pass's render_func. + [SetupCondition = c] the pass is disabled for the frame when c is false. + [RenderCondition = c] the pass is set up (its resources stay alive) but its + render is skipped when c is false. + [RunAlways] always enabled. + [PreSetup] adds PassDefault::pre_setup(Graph&), run once per + frame before graph setup whether or not the pass ends + up enabled — for real side effects. + + With any of RunAlways/SetupCondition/RenderCondition the whole setup() is + generated (into pass_defaults.cpp) and you supply only render. Without + them, the owner supplies setup_func as well. + + Converting a pass between [Static] and [Multiple] changes the C++ shape you + must provide (PassDefault::render vs render_funcs[N]); see PSSM_Cascade + in PSSM.ixx for the [Multiple] pattern. + + +-------------------------------------------------------------------------------- + CONDITIONS +-------------------------------------------------------------------------------- + +Used by [SetupCondition], [RenderCondition] and [Optional]. Written like a C++ +boolean expression, but parsed and checked by Prism: + + Owner::field a field of a context struct: becomes + builder.graph->get_context().field. + Owner must be a struct and field must exist. + Enum::Value an enum value (checked to exist). + data.field a field of this pass (including data.pass_index on + [Multiple] passes). + exists(field) the resource field is produced by some pass this + frame (builder.exists(data.field)). + literals, && || ! == != < <= > >= ( ) + + [Optional = VSMSelectors::shadow_source == ShadowSource::VSM + && exists(VSM_PCSS_ShadowNoise)] + +Because conditions are parsed, Prism knows exactly which context fields each +pass's enable decision reads (context_deps.h) — the basis for caching graph +plans. A backtick condition works but makes that dependency set unknown. + + +-------------------------------------------------------------------------------- + PassView, Pipeline, rt +-------------------------------------------------------------------------------- + + PassView GBuffer { [Always = Read] Texture GBuffer_Albedo; ... } + +A named group of pass fields, used as a field type in a PassNode +(`GBuffer gbuffer;`); its leaves are declared as if written in the pass. +[Always] on a leaf is the default for every consumer. (Supported by the +grammar and generator; no current .prism file declares one.) + + Pipeline MainPipeline + { + PreScene; + [Async] BlueNoise; + Voxelize; + ... + } + +An ordered pass list. Generates Pipelines::Name with a member per pass, +add_passes(Graph&), and precomputed resource-state timelines and pass +dependencies. Entry options: [Async] / [Async2] / [Async3] — run this +[Compute] pass on async compute queue 1/2/3. Every entry must name an existing PassNode +(checked). + + rt Name { float4 color; DSV depth; } + +Older render-target declaration; [RenderTarget] structs replaced it in +current files. + + +-------------------------------------------------------------------------------- + WHAT prismc CHECKS +-------------------------------------------------------------------------------- + +Syntax errors, with the exact position; a file with a syntax error produces +no output and stops the run. + +Semantic checks (Validate.cpp): + - every option name, per declaration kind (with "did you mean") + - condition references: Owner::field, Enum::Value, data.field, exists(field) + - [Size = Owner::field] names a real struct field + - [Write = {leaves}] names fields of that PassView + - Pipeline entries name existing PassNodes + - RaytraceRaygen/RaytracePass have a [Bind] naming a RaytracePSO + - shader paths: quoted, end in .hlsl, file exists under workdir/shaders + - duplicate declarations of the same kind across all files + - `#` lines in HLSL function bodies / %{ }% that aren't preprocessor + directives + +Adding a new option to the language means: teach a template or Main.cpp to +read it, AND add it to KNOWN_OPTIONS in Validate.cpp — otherwise every use of +it is rejected as unknown. + + +-------------------------------------------------------------------------------- + EDITOR SUPPORT (Visual Studio) +-------------------------------------------------------------------------------- + +Install bin/editor/prism.vsix (built by +`python sources/Prism/editor/gen_vs_extension.py`; needs the VS Installer's +"Visual Studio extension development" workload). It provides: + + - syntax highlighting (generated from Prism.g4: keywords, built-in types, + formats, options, user-declared names via the language server) with the + C++ grammar inside HLSL bodies + - live errors in the Error List as you type, with quick fixes (Ctrl+.) + - go-to-definition (F12): structs, fields, enum values, layouts/slots, + passes, functions, and shader paths (opens the .hlsl) + - hover: struct bodies, field types, function signatures (all overloads), + where an option is accepted and which values are in use + - completion: Owner:: members, data. fields, option names valid at that + position, option values already used elsewhere, shader files inside + the quotes of `compute = "..."` + - outline (navigation bar) and Ctrl+T symbol search + - Tools > Regenerate Prism code / the Prism toolbar + +Rebuild the VSIX after changing the grammar or the compiler: it bundles the +prismc.exe it was built with. Set PRISM_LSP_SERVER to another prismc.exe to try +a server without reinstalling. + + +-------------------------------------------------------------------------------- + COMMON TASKS +-------------------------------------------------------------------------------- + +Add shader data a pass binds + 1. `[Bind = DefaultLayout::InstanceN] struct MyParams { ... }` — pick a + slot no other struct used in the same draw/dispatch occupies. + 2. Regenerate; fill Slots::MyParams in C++ and set it on the list. + 3. In HLSL include the generated header and read GetMyParams(). + +Add a compute pass + Use the add-render-pass skill (.claude/skills/add-render-pass). In short: + ComputePSO with `compute = "dir/file.hlsl"`, a PassNode with the resources + it reads/writes, an entry in the Pipeline, regenerate, then implement the + render function and the shader. + +Make a pass optional + Put the switch in a context struct (Variable on the C++ side, a + field in a Prism struct) and use [SetupCondition = MyContext::enabled]. + + +-------------------------------------------------------------------------------- + PITFALLS +-------------------------------------------------------------------------------- + +- Two structs on the same [Bind] slot overwrite each other in one draw — the + symptom is geometry that draws but is invisible or wrong. +- A nested (non-[Bind]) struct whose ONLY field is a resource is dropped from + the generated struct without any error (REFACTOR_TODO item 9); give it a + leading plain field. +- A PSO whose shader never touches its bound resources asserts + (!slots.empty()) at startup rather than being a no-op. +- A stale prismc.exe generates output that disagrees with the current + templates: rebuild the Prism project after changing the generator. +- A new generated file is invisible to the build until generate_project.bat + runs (the VS button detects this and offers to run it). +- Backtick expressions and HLSL bodies are not checked by Prism: their errors + surface as C++ compile errors or at shader compile time. + +================================================================================ diff --git a/overview/RenderSystem.txt b/overview/RenderSystem.txt index e8cde54c1..5ec64b27a 100644 --- a/overview/RenderSystem.txt +++ b/overview/RenderSystem.txt @@ -290,7 +290,7 @@ PassDefault (traits struct; declared in pass_defaults.h, bodies handwritten) MAIN PIPELINE (Pipelines::MainPipeline) ================================================================================ -Defined in test.sig. Execution order: +Defined in test.prism. Execution order: [Static] PreScene TLAS update + RTX::prepare BlueNoise supply blue noise textures diff --git a/overview/readme.txt b/overview/readme.txt index c18f27744..153e6d47d 100644 --- a/overview/readme.txt +++ b/overview/readme.txt @@ -18,9 +18,10 @@ It is structured as several layers: Contains the frame graph, scene management, effects, assets, materials, and all render pass logic. - SIGParser/ — A code-generation tool that reads .sig files and emits C++ - headers (pass structs, slot bindings, PSO declarations, - pipeline classes, pass_defaults.h) via Jinja2 templates. + Prism/ — The Prism declaration language and its compiler (prismc): + reads .prism files and generates C++ and HLSL (structs and + slot bindings, PSOs, pass structs and setups, pipeline + classes). See overview/Prism.txt. Spectrum/ — The application layer (main.cpp and friends). Wires the engine together, owns the window/swap chain, and hosts any @@ -86,48 +87,35 @@ PassFlags: General | Compute | Required -------------------------------------------------------------------------------- - SIG FILES AND CODE GENERATION + PRISM FILES AND CODE GENERATION -------------------------------------------------------------------------------- -.sig files define the data contracts for GPU resources, PSOs, slots, and passes. -SIGParser reads them and emits C++ via Jinja2 templates. - -Key .sig constructs: - - struct Foo { ... } — GPU-visible buffer layout; generates slot/table - binding code. - GraphicsPSO / ComputePSO / WorkgraphPSO / RaytracePSO — pipeline state - objects; generates PSOS:: entries and wrappers. - PassNode Foo { ... } — declares a render pass and its resource handles. - Generates Passes::Foo, Passes::Foo::Context. - -PassNode options: - [Static] — pass has no pipeline member; setup/render come from - PassDefault; pipeline.jinja emits an - unconditional PassDefault<> call. - [Multiple = N] — pass can be instanced up to N times; generates MaxCount, - Names[N], setup_funcs[N], render_funcs[N]. - [Static] + [Multiple] — unconditional loop over MaxCount slots using - PassDefault<>; setup gates inactive slots via a - counter in a graph context. - [Flags = X] — sets PassDefault<>::flags (e.g. Compute, Required). - -Generated files (autogen/): - pass/.h — Passes::Name struct with Context, handle fields, - setup_func / render_func members (if not Static). - pass/.pipeline.h — Pipelines::Pipeline class with pass members and - add_passes(Graph&). - pass_defaults.h — PassDefault<> specialization declarations for - every [Static] pass. Bodies are written by hand - in separate .ixx files. - -Templates (SIGParser/templates/cpp/): - pipeline.jinja — generates the pipeline class; handles Static, - Multiple, Static+Multiple branches. - pass_defaults.jinja — generates pass_defaults.h declarations from [Static] - passes; the implementation bodies are NOT generated. - pass.jinja — generates per-pass structs. - slot.jinja / layout.jinja / pso.jinja / etc. +Full reference: overview/Prism.txt (every declaration, option, generated file, +check and editor feature). + +.prism files in sources/Prism/defs/ declare GPU/CPU shared structs and their +slot bindings, root layouts, graphics/compute/raytracing/work-graph PSOs, +FrameGraph passes, pipelines, enums, constants and HLSL helper functions. +prismc (sources/Prism/) validates them and generates C++ and HLSL through +Jinja2 templates: + + struct Foo { ... } — Table::Foo + Slots::Foo (with [Bind]) and the + matching HLSL struct. + ComputePSO / GraphicsPSO / WorkgraphPSO / RaytracePSO — PSOS:: entries with + permutation keys from their `define`s. + PassNode Foo { ... } — Passes::Foo with a Context handle per resource + field and a generated setup (need/create per + field options). + Pipeline Foo { ... } — Pipelines::Foo with add_passes(Graph&). + +Main pass options: [Static] (render is PassDefault::render), [Multiple=N] +(N instances, data.pass_index), [SetupCondition]/[RenderCondition]/ +[RunAlways] (setup generated into pass_defaults.cpp), [Compute] (+ [Async] on +the pipeline entry), [Required], [PreSetup]. + +Regenerate: Tools > Regenerate Prism code in Visual Studio, or +`cd sources/Prism && ../../bin/profile/prismc.exe`; run generate_project.bat +when generated files were added or removed. -------------------------------------------------------------------------------- @@ -184,8 +172,8 @@ Populated once per frame before graph setup, consumed by any pass: MAIN PIPELINE (Pipelines::MainPipeline) -------------------------------------------------------------------------------- -Defined in test.sig, generated into MainPipeline.pipeline.h. -Pass execution order (from test.sig comments): +Defined in test.prism, generated into MainPipeline.pipeline.h. +Pass execution order (from test.prism comments): PreScene [Static] BlueNoise diff --git a/sources/HAL/API/D3D12/HAL.D3D12.IndirectCommand.ixx b/sources/HAL/API/D3D12/HAL.D3D12.IndirectCommand.ixx index 624994a02..95e5fd8e0 100644 --- a/sources/HAL/API/D3D12/HAL.D3D12.IndirectCommand.ixx +++ b/sources/HAL/API/D3D12/HAL.D3D12.IndirectCommand.ixx @@ -42,13 +42,13 @@ namespace HAL // This assert was never the problem -- it always correctly passed at // 104 bytes (natural C++ alignment from GPUAddress = uint64_t). The // actual bug was on the GPU/HLSL side: dispatch_rays_args_build.hlsl's - // own DispatchRaysArguments mirror (ddgi.sig) tightly packed to 100 + // own DispatchRaysArguments mirror (ddgi.prism) tightly packed to 100 // bytes with no trailing pad, 4 short of the 104 D3D12 itself requires // for a DISPATCH_RAYS command signature's ByteStride (confirmed via // CreateCommandSignature's own D3D12 ERROR #743 when the C++ side was // experimentally packed down to 100 to "match" -- D3D12 flatly refused // that stride, proving 104 is the real, required, non-negotiable size). - // See ddgi.sig's own comment on DispatchRaysArguments' trailing pad + // See ddgi.prism's own comment on DispatchRaysArguments' trailing pad // field for the actual fix. static_assert(sizeof(DispatchRaysArguments) == sizeof(D3D12_DISPATCH_RAYS_DESC)); diff --git a/sources/HAL/API/Vulkan/REFACTOR_TODO.md b/sources/HAL/API/Vulkan/REFACTOR_TODO.md index b1779ac3f..ea436268d 100644 --- a/sources/HAL/API/Vulkan/REFACTOR_TODO.md +++ b/sources/HAL/API/Vulkan/REFACTOR_TODO.md @@ -142,7 +142,7 @@ Audit checklist (per ixx file): `OpAccessChain`. Fixed by splitting into `float4 pos_a; float4 pos_b;` (same binary layout) and replacing `(float2[4])GetColorRect().pos` with explicit swizzles in `rect.hlsl`. **Note:** the SIG template (`templates/hlsl/table.jinja`) will - regenerate `float4 pos[2]` if `ui.sig` is re-parsed — the template needs the same + regenerate `float4 pos[2]` if `ui.prism` is re-parsed — the template needs the same fix as `gather_pipeline` (emit individual fields instead of packed arrays, or use scalar layout). The shader change in `rect.hlsl` must also be re-applied after any regeneration. diff --git a/sources/HAL/DXC/DXC.ShaderCompiler.cpp b/sources/HAL/DXC/DXC.ShaderCompiler.cpp index 7f33ccbdc..0cafd1343 100644 --- a/sources/HAL/DXC/DXC.ShaderCompiler.cpp +++ b/sources/HAL/DXC/DXC.ShaderCompiler.cpp @@ -229,7 +229,7 @@ namespace HAL // Gives shader authors a bare Log("fmt", args...) call -- no // GetDebugInfo() prefix, no manual #include, no manual asuint() -- by // forwarding to DebugInfo's own member Log() overloads - // (sources/SIGParser/sigs/defaultlayout.sig). Called on text that + // (sources/Prism/defs/defaultlayout.prism). Called on text that // Compile_Shader has already made sure contains "GetDebugInfo()" (see // has_debug_info and the retry-with-#include-then-reflatten path // around the preprocess pass below) -- inserting the wrapper is the diff --git a/sources/HAL/HAL.CommandList.ixx b/sources/HAL/HAL.CommandList.ixx index 3ed40b9ef..944654f32 100644 --- a/sources/HAL/HAL.CommandList.ixx +++ b/sources/HAL/HAL.CommandList.ixx @@ -235,7 +235,7 @@ export{ // whole_resource: record the use as ALL_SUBRESOURCES instead of the // mip/array range the view names. Set by a table member declared - // [Barrier = ALL] in its .sig -- see HAL::BoundResource. + // [Barrier = ALL] in its .prism -- see HAL::BoundResource. void add_resource_usage(const ResourceInfo& info, BarrierSync operation = BarrierSync::NONE, bool whole_resource = false); }; diff --git a/sources/HAL/HAL.DLSSRR.ixx b/sources/HAL/HAL.DLSSRR.ixx index 0111b7e32..897c8190f 100644 --- a/sources/HAL/HAL.DLSSRR.ixx +++ b/sources/HAL/HAL.DLSSRR.ixx @@ -38,7 +38,7 @@ export namespace nvidia // open, mirroring DLSS::upscale(). Output size is read from // `color_out`'s own resource description, like DLSS::upscale(). // `normal_roughness` is the packed buffer NormalRoughnessRepack - // produces (see UpscalingDLSSRR.sig); `specular_hit_distance` reuses + // produces (see UpscalingDLSSRR.prism); `specular_hit_distance` reuses // VoxelReflectionNoise's alpha channel (RGB=hit color, A=hit distance). void denoise(HAL::CommandList& list, const FrameToken& frame, const FrameConstants& constants, const mat4x4& world_to_view, DLSSMode mode, bool hdr, uint32_t viewport, diff --git a/sources/HAL/HAL.DescriptorHeap.ixx b/sources/HAL/HAL.DescriptorHeap.ixx index 4a774de5c..4c84d069e 100644 --- a/sources/HAL/HAL.DescriptorHeap.ixx +++ b/sources/HAL/HAL.DescriptorHeap.ixx @@ -37,7 +37,7 @@ export { ResourceInfo* info = nullptr; - // [Barrier = ALL] on the .sig member. Transition the WHOLE resource + // [Barrier = ALL] on the .prism member. Transition the WHOLE resource // instead of the mip/array range this view names. // // For a view narrowed to one mip of a big array (a Hi-Z pyramid diff --git a/sources/HAL/HAL.NRD.cpp b/sources/HAL/HAL.NRD.cpp index 0b4b0c501..12133fbba 100644 --- a/sources/HAL/HAL.NRD.cpp +++ b/sources/HAL/HAL.NRD.cpp @@ -89,7 +89,7 @@ namespace nvidia // NRD's one-frameIndex-increment-per-Instance-per-frame requirement). // // REBLUR_DIFFUSE for indirect GI (RTXIndirectNoise, IndirectRTX, - // voxel.sig). REBLUR_SPECULAR for reflections (RTXReflectionNoise/ + // voxel.prism). REBLUR_SPECULAR for reflections (RTXReflectionNoise/ // VoxelReflectionNoise) -- a separate denoiser rather than the // combined REBLUR_DIFFUSE_SPECULAR method, so either signal can be // denoised independently of the other (g_indirect_denoiser and @@ -111,7 +111,7 @@ namespace nvidia Log::get() << "[NRD] REBLUR CreateInstance failed (" << (int)reblur_res << ")" << Log::endl; // SIGMA_SHADOW for VSM's non-penumbra fallback (VSM_Combine/ - // NRD_SIGMA_Execute, vsm.sig/nrd_sig_test.sig). + // NRD_SIGMA_Execute, vsm.prism/nrd_sig_test.prism). static const nrd::DenoiserDesc sigma_denoisers[] = { { 0, nrd::Denoiser::SIGMA_SHADOW } }; @@ -238,7 +238,7 @@ namespace nvidia return r.descriptorType == nrd::DescriptorType::TEXTURE ? dummy_srv : dummy_uav; } - // Clear.cs.hlsl|FLOAT=1 -- first ported kernel (see nrd_sig_test.sig, + // Clear.cs.hlsl|FLOAT=1 -- first ported kernel (see nrd_sig_test.prism, // workdir/shaders/nrd/sig_clear.hlsl). Clear.resources.hlsli declares // gDebug/gViewZScale/gDenoisingRange only "for availability in // Common.hlsl" -- Clear.cs.hlsl's actual body (gOut[pixelPos] = 0;) never @@ -278,7 +278,7 @@ namespace nvidia compute.dispatch((int)dispatch.gridWidth, (int)dispatch.gridHeight, 1); } - // Clear.cs.hlsl|FLOAT=0 -- the uint4 permutation (nrd_sig_test.sig's + // Clear.cs.hlsl|FLOAT=0 -- the uint4 permutation (nrd_sig_test.prism's // Clear_UInt4Resources/NRD_Clear_UInt4, sig_clear_uint4.hlsl), for // integer-format pool resources (e.g. SIGMA's gOut_HistoryLength, // RWTexture2D) that dispatch_clear's float4-typed view can't @@ -309,7 +309,7 @@ namespace nvidia // Item 8 (see [[project-nrd-integration]]): real REBLUR_DIFFUSE dispatch // wiring. resolve_srv/resolve_uav resolve one nrd::ResourceDesc entry // (from a DispatchDesc::resources[] array, walked position-for-position - // against each kernel's .sig struct field order below -- both are + // against each kernel's .prism struct field order below -- both are // derived from the same source, that kernel's real resources.hlsli // NRD_INPUTS/NRD_OUTPUTS declaration order, so position i in one matches // field i in the other) into a bindable view: PERMANENT_POOL/ @@ -389,7 +389,7 @@ namespace nvidia // SIGMASharedConstants is #pragma pack(push,1) with fields in the exact // order/type of SIGMA_Config.hlsli's SIGMA_SHARED_CONSTANTS macro (see - // nrd_sig_test.sig's comment) -- verified by hand against HLSL's default + // nrd_sig_test.prism's comment) -- verified by hand against HLSL's default // cbuffer packing rules (no field here straddles a 16-byte boundary), so // NRD's own raw constantBufferData blob can be copied onto it directly. // The size assert is the real safety net, same reasoning as @@ -405,7 +405,7 @@ namespace nvidia } // SIGMA_SHADOW dispatch wiring, same resolve_srv/resolve_uav plumbing and - // positional dispatch.resources[] -> .sig struct field order convention + // positional dispatch.resources[] -> .prism struct field order convention // as REBLUR above, now with real shared constants too (see // fill_sigma_shared_constants above -- every SIGMA kernel's own // .resources.hlsli includes the same SIGMA_SHARED_CONSTANTS block @@ -453,7 +453,7 @@ namespace nvidia // FIRST_PASS=0 permutation of SIGMA_Blur.cs.hlsl -- gIn_Shadow_Translucency // (the previous frame's OUT_SHADOW_TRANSLUCENCY, read back as history) IS - // compiled in, see nrd_sig_test.sig's SIGMA_BlurFirstPass0Resources comment. + // compiled in, see nrd_sig_test.prism's SIGMA_BlurFirstPass0Resources comment. static void dispatch_sigma_blur_firstpass0(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { ASSERT(dispatch.resourcesNum == 7); @@ -472,7 +472,7 @@ namespace nvidia } // FIRST_PASS=1 permutation -- no gIn_Shadow_Translucency (one fewer input - // than FIRST_PASS=0), see nrd_sig_test.sig's SIGMA_BlurFirstPass1Resources + // than FIRST_PASS=0), see nrd_sig_test.prism's SIGMA_BlurFirstPass1Resources // comment. static void dispatch_sigma_blur_firstpass1(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { @@ -511,7 +511,7 @@ namespace nvidia // REBLURSharedConstants is #pragma pack(push,1) with fields in the exact // order/type of REBLUR_Config.hlsli's REBLUR_SHARED_CONSTANTS macro (see - // nrd_sig_test.sig's comment) -- verified by hand against HLSL's default + // nrd_sig_test.prism's comment) -- verified by hand against HLSL's default // cbuffer packing rules (no field here straddles a 16-byte boundary, so // zero implicit padding is needed at any point in this exact sequence), // so NRD's own raw constantBufferData blob can be copied onto it @@ -547,7 +547,7 @@ namespace nvidia } // Shared by both HitDistReconstruction PSOs (MODE_5X5=0/1 -- identical - // resource layout, see nrd_sig_test.sig's comment on the 5x5 PSO). + // resource layout, see nrd_sig_test.prism's comment on the 5x5 PSO). template static void dispatch_reblur_hitdistreconstruction(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { @@ -566,7 +566,7 @@ namespace nvidia // REBLUR_SPECULAR sibling of dispatch_reblur_hitdistreconstruction -- // same resource count/layout (4 in + 1 out, Diff->Spec renamed), see - // nrd_sig_test.sig's REBLUR_HitDistReconstructionSpecularResources + // nrd_sig_test.prism's REBLUR_HitDistReconstructionSpecularResources // comment. template static void dispatch_reblur_hitdistreconstruction_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) @@ -601,7 +601,7 @@ namespace nvidia // REBLUR_SPECULAR sibling of dispatch_reblur_prepass -- one extra output // (gOut_SpecHitDistForTracking, no diffuse equivalent), see - // nrd_sig_test.sig's REBLUR_PrePassSpecularResources comment. + // nrd_sig_test.prism's REBLUR_PrePassSpecularResources comment. static void dispatch_reblur_prepass_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { ASSERT(dispatch.resourcesNum == 6); @@ -645,7 +645,7 @@ namespace nvidia } // REBLUR_SPECULAR sibling of dispatch_reblur_temporalaccumulation -- see - // nrd_sig_test.sig's REBLUR_TemporalAccumulationSpecularResources comment + // nrd_sig_test.prism's REBLUR_TemporalAccumulationSpecularResources comment // for the field-list differences vs diffuse (14 in + 5 out here, vs // diffuse's 12 in + 4 out). static void dispatch_reblur_temporalaccumulation_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) @@ -697,7 +697,7 @@ namespace nvidia // REBLUR_SPECULAR sibling of dispatch_reblur_historyfix -- one extra input // (gIn_SpecHitDistForTracking, no diffuse equivalent), see - // nrd_sig_test.sig's REBLUR_HistoryFixSpecularResources comment. + // nrd_sig_test.prism's REBLUR_HistoryFixSpecularResources comment. static void dispatch_reblur_historyfix_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { ASSERT(dispatch.resourcesNum == 9); @@ -735,7 +735,7 @@ namespace nvidia } // REBLUR_SPECULAR sibling of dispatch_reblur_blur -- same resource count - // (5 in + 2 out, Diff->Spec renamed), see nrd_sig_test.sig's + // (5 in + 2 out, Diff->Spec renamed), see nrd_sig_test.prism's // REBLUR_BlurSpecularResources comment. static void dispatch_reblur_blur_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { @@ -775,7 +775,7 @@ namespace nvidia // REBLUR_SPECULAR sibling of dispatch_reblur_postblur_ts0 -- same // resource count (5 in + 4 out, Diff->Spec renamed), see - // nrd_sig_test.sig's REBLUR_PostBlurTS0SpecularResources comment. + // nrd_sig_test.prism's REBLUR_PostBlurTS0SpecularResources comment. static void dispatch_reblur_postblur_ts0_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { ASSERT(dispatch.resourcesNum == 9); @@ -814,7 +814,7 @@ namespace nvidia // REBLUR_SPECULAR sibling of dispatch_reblur_postblur_ts1 -- same // resource count (5 in + 2 out, Diff->Spec renamed), see - // nrd_sig_test.sig's REBLUR_PostBlurTS1SpecularResources comment. + // nrd_sig_test.prism's REBLUR_PostBlurTS1SpecularResources comment. static void dispatch_reblur_postblur_ts1_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { ASSERT(dispatch.resourcesNum == 7); @@ -855,7 +855,7 @@ namespace nvidia // REBLUR_SPECULAR sibling of dispatch_reblur_temporalstabilization -- one // extra input (gIn_SpecHitDistForTracking, no diffuse equivalent), see - // nrd_sig_test.sig's REBLUR_TemporalStabilizationSpecularResources comment. + // nrd_sig_test.prism's REBLUR_TemporalStabilizationSpecularResources comment. static void dispatch_reblur_temporalstabilization_specular(nvidia::NRD& nrd_hal, HAL::ComputeContext& compute, const nrd::DispatchDesc& dispatch, const nvidia::NRDFrameInputs& in) { ASSERT(dispatch.resourcesNum == 12); @@ -1060,7 +1060,7 @@ namespace nvidia reblur_needs_history_reset = false; nrd::SetCommonSettings(*reblur_instance, common); - // Library defaults throughout (see nrd_sig_test.sig's REBLURSharedConstants + // Library defaults throughout (see nrd_sig_test.prism's REBLURSharedConstants // comment and raytracing.hlsl's gHitDistParams -- both must move // together with hitDistanceParameters if this is ever tuned). nrd::ReblurSettings reblur_settings{}; @@ -1093,7 +1093,7 @@ namespace nvidia // `|`-suffix on the identifier string, not the prefix // build_dispatch_table's starts_with() checks match on), so // dispatch.identifier is what actually distinguishes which - // (differently-shaped, see nrd_sig_test.sig's per-kernel + // (differently-shaped, see nrd_sig_test.prism's per-kernel // Specular struct comments) resource list this dispatch carries. bool is_specular = dispatch.identifier == 1; diff --git a/sources/HAL/HAL.NRD.ixx b/sources/HAL/HAL.NRD.ixx index 5f25ad25e..960fe597e 100644 --- a/sources/HAL/HAL.NRD.ixx +++ b/sources/HAL/HAL.NRD.ixx @@ -21,9 +21,9 @@ // ensure_pools() rather than folding this into create_pipelines()). // // Phase 4: the GetComputeDispatches() execution loop (execute()), SIG-driven. -// Each NRD kernel gets its own .sig struct + ComputePSO (ordinary SIG -// declarations -- ../custom-overlay/nrd's usage notes, sources/SIGParser/sigs/ -// nrd_sig_test.sig for the first one, Clear_Constants/NRD_Clear_Test) plus a +// Each NRD kernel gets its own .prism struct + ComputePSO (ordinary SIG +// declarations -- ../custom-overlay/nrd's usage notes, sources/Prism/defs/ +// nrd_sig_test.prism for the first one, Clear_Constants/NRD_Clear_Test) plus a // small shim .hlsl (workdir/shaders/nrd/sig_*.hlsl) that predefines NRD.hlsli's // 12 binding macros to route through that struct's generated bindless // accessors instead of raw register()s -- NRD.hlsli's own documented "custom @@ -31,7 +31,7 @@ // resource list are copied field-by-field into the matching Slots::X struct, // and compute.set_pipeline()/set()/dispatch() do the rest (bindless // index resolution, CBV upload, root signature/table binding) exactly like -// every other compute pass in the engine. Only kernels with a ported .sig +// every other compute pass in the engine. Only kernels with a ported .prism // struct actually dispatch; the rest are skipped (logged) until ported. export module HAL:NRD; @@ -131,7 +131,7 @@ export namespace nvidia // the top of execute_reblur()/execute_shadow(), before that call's // dispatch loop runs. MUST be thread_local, not a plain member: the // two callers run on different FrameGraph queues (NRD_REBLUR_Execute - // is [Async], NRD_SIGMA_Execute is [Async2], test.sig) whose command + // is [Async], NRD_SIGMA_Execute is [Async2], test.prism) whose command // lists can be recorded concurrently on different worker threads, and // a plain shared pointer here is a genuine data race -- confirmed // live as an intermittent out-of-bounds pool access (one thread's diff --git a/sources/HAL/HAL.Sampler.ixx b/sources/HAL/HAL.Sampler.ixx index 542ea1be8..04bbfcf4a 100644 --- a/sources/HAL/HAL.Sampler.ixx +++ b/sources/HAL/HAL.Sampler.ixx @@ -95,7 +95,7 @@ namespace HAL // the compare value (current fragment depth) is >= the sampled // texel. Was LESS_EQUAL -- correct for direct-Z, never updated when // this project switched to reversed-Z, and unused anywhere until - // now (confirmed: no .sig file referenced it), so safe to flip in + // now (confirmed: no .prism file referenced it), so safe to flip in // place rather than add a second desc. SamplerDesc SamplerShadowComparisonDesc = SamplerDesc{ Filter::LINEAR, Filter::LINEAR, Filter::LINEAR, TextureAddressMode::CLAMP, TextureAddressMode::CLAMP , TextureAddressMode::CLAMP,0.0f,16, ComparisonFunc::GREATER_EQUAL, float4(1,1,1,1), 0, std::numeric_limits::max() }; diff --git a/sources/HAL/SIG/RTX.ixx b/sources/HAL/SIG/RTX.ixx index b8c82b5de..d5446df9b 100644 --- a/sources/HAL/SIG/RTX.ixx +++ b/sources/HAL/SIG/RTX.ixx @@ -355,9 +355,9 @@ struct SelectLocal } // Same generator-index lookup dispatch() uses, exposed on its own - // for callers building a DispatchRaysArguments record (raytracing.sig) + // for callers building a DispatchRaysArguments record (raytracing.prism) // for GPU-driven ExecuteIndirect instead of a direct dispatch_rays call - // (DDGIProbeDispatchArgsBuild, ddgi.sig, is the first user). + // (DDGIProbeDispatchArgsBuild, ddgi.prism, is the first user). template HAL::ResourceAddress raygen_address() const { diff --git a/sources/HAL/SIG/SIG.ixx b/sources/HAL/SIG/SIG.ixx index 9cb3eb9e5..d42bbf483 100644 --- a/sources/HAL/SIG/SIG.ixx +++ b/sources/HAL/SIG/SIG.ixx @@ -126,7 +126,7 @@ export // followed by Width/Height/Depth -- because ExecuteIndirect reads this // buffer's raw bytes straight off the GPU using that exact layout; field // order and width (GPUAddress = UINT64) must match, not just total size. - // A shader populates it (see ddgi.sig's DDGIProbeDispatchArgsBuild): the + // A shader populates it (see ddgi.prism's DDGIProbeDispatchArgsBuild): the // three shader-table addresses/sizes/strides come from the RTXPSO's own // tables (constant for the PSO's lifetime), Width/Height/Depth from // whatever this frame's actual dispatch size should be -- the whole @@ -141,7 +141,7 @@ export // tight 100-byte sum of its real fields) -- natural C++ alignment // (GPUAddress = uint64_t forces 8-byte struct alignment, rounding 100 up // to 104) already gives the right size; do NOT #pragma pack(1) this. - // The GPU-side mirror (DispatchRaysArguments in ddgi.sig / + // The GPU-side mirror (DispatchRaysArguments in ddgi.prism / // dispatch_rays_args_build.hlsl) must match this 104-byte stride // exactly -- see its own comment for the explicit trailing pad field // that keeps it there, since HLSL has no equivalent automatic alignment diff --git a/sources/HAL/SIG/Slots.ixx b/sources/HAL/SIG/Slots.ixx index 2f5b49aa5..054b7f416 100644 --- a/sources/HAL/SIG/Slots.ixx +++ b/sources/HAL/SIG/Slots.ixx @@ -51,7 +51,7 @@ inline void report_unbound_slot(const char* member) // ---- [Auto = ...] ---------------------------------------------------------- // // Which null descriptor a table member wants when nothing was assigned to it. -// The .sig names the kind; the member's C++ type supplies the view dimension +// The .prism names the kind; the member's C++ type supplies the view dimension // and format, because the descriptor has to agree with what the shader // declares -- see get_null_descriptor. @@ -119,14 +119,14 @@ public: std::vector resources; std::set> descriptors; - // Set for the duration of one member's compile() when the .sig declared it + // Set for the duration of one member's compile() when the .prism declared it // [Barrier = ALL]. A flag rather than a parameter because a member can be a // scalar handle, a fixed array, or a vector, each with its own compile() // overload and its own push_back -- all of which inherit the scope this way // without every overload having to forward it. bool bind_whole_resource = false; - // compile() for a member the .sig marked [Barrier = ALL]. Generated table + // compile() for a member the .prism marked [Barrier = ALL]. Generated table // code calls this instead of compile(); everything else is identical, so // the layout it writes is unchanged. template @@ -143,7 +143,7 @@ public: } - // compile() for a member the .sig marked [Auto = ..._Null]. When the member + // compile() for a member the .prism marked [Auto = ..._Null]. When the member // was assigned, this is exactly compile(). When it was not, it writes the // offset of a shared null descriptor instead of leaving the slot at index 0. // diff --git a/sources/HAL/autogen/Constants.ixx b/sources/HAL/autogen/Constants.ixx index e398fc317..a4e3ab3f1 100644 --- a/sources/HAL/autogen/Constants.ixx +++ b/sources/HAL/autogen/Constants.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.Constants; @@ -12,8 +12,8 @@ import Core; // never need a Table type at all) whenever a new raw const needs one. import :Autogen.Tables.TileRecord; -// One `const Name = value;` declaration (SIG.g4's const_definition) per line, -// in .sig declaration order -- a later constant's raw value may reference an +// One `const Name = value;` declaration (Prism.g4's const_definition) per line, +// in .prism declaration order -- a later constant's raw value may reference an // earlier one by its unqualified name (ordinary C++ initialization-order // rules), e.g. `const MaxDispatchEntries = `MaxLevels * 2048`;`. export namespace Constants diff --git a/sources/HAL/autogen/autogen.cpp b/sources/HAL/autogen/autogen.cpp index 6ee0d702f..3c047a083 100644 --- a/sources/HAL/autogen/autogen.cpp +++ b/sources/HAL/autogen/autogen.cpp @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ module HAL; import HAL; diff --git a/sources/HAL/autogen/autogen.ixx b/sources/HAL/autogen/autogen.ixx index 43f389b14..23fea0c95 100644 --- a/sources/HAL/autogen/autogen.ixx +++ b/sources/HAL/autogen/autogen.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ module; // Private imports for internal use only - not re-exported to reduce compile times diff --git a/sources/HAL/autogen/enums.ixx b/sources/HAL/autogen/enums.ixx index f867b2624..00169f46b 100644 --- a/sources/HAL/autogen/enums.ixx +++ b/sources/HAL/autogen/enums.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Enums; diff --git a/sources/HAL/autogen/layout/DefaultLayout.layout.ixx b/sources/HAL/autogen/layout/DefaultLayout.layout.ixx index d4f04d280..691c045c9 100644 --- a/sources/HAL/autogen/layout/DefaultLayout.layout.ixx +++ b/sources/HAL/autogen/layout/DefaultLayout.layout.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.Layouts.DefaultLayout; import Core; diff --git a/sources/HAL/autogen/layout/FrameLayout.layout.ixx b/sources/HAL/autogen/layout/FrameLayout.layout.ixx index fb5025e84..d7ad2e1cd 100644 --- a/sources/HAL/autogen/layout/FrameLayout.layout.ixx +++ b/sources/HAL/autogen/layout/FrameLayout.layout.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.Layouts.FrameLayout; import Core; diff --git a/sources/HAL/autogen/layout/NoneLayout.layout.ixx b/sources/HAL/autogen/layout/NoneLayout.layout.ixx index 0c71a9792..d3e186677 100644 --- a/sources/HAL/autogen/layout/NoneLayout.layout.ixx +++ b/sources/HAL/autogen/layout/NoneLayout.layout.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.Layouts.NoneLayout; import Core; diff --git a/sources/HAL/autogen/pso.cpp b/sources/HAL/autogen/pso.cpp index 75a53bd33..61899cdc8 100644 --- a/sources/HAL/autogen/pso.cpp +++ b/sources/HAL/autogen/pso.cpp @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ module HAL; import Core; @@ -28,7 +28,7 @@ void init_indirect_commands(HAL::Device& device, enum_array ruleNames, +struct PrismLexerStaticData final { + PrismLexerStaticData(std::vector ruleNames, std::vector channelNames, std::vector modeNames, std::vector literalNames, @@ -24,10 +24,10 @@ struct SIGLexerStaticData final { symbolicNames(std::move(symbolicNames)), vocabulary(this->literalNames, this->symbolicNames) {} - SIGLexerStaticData(const SIGLexerStaticData&) = delete; - SIGLexerStaticData(SIGLexerStaticData&&) = delete; - SIGLexerStaticData& operator=(const SIGLexerStaticData&) = delete; - SIGLexerStaticData& operator=(SIGLexerStaticData&&) = delete; + PrismLexerStaticData(const PrismLexerStaticData&) = delete; + PrismLexerStaticData(PrismLexerStaticData&&) = delete; + PrismLexerStaticData& operator=(const PrismLexerStaticData&) = delete; + PrismLexerStaticData& operator=(PrismLexerStaticData&&) = delete; std::vector decisionToDFA; antlr4::atn::PredictionContextCache sharedContextCache; @@ -41,12 +41,12 @@ struct SIGLexerStaticData final { std::unique_ptr atn; }; -::antlr4::internal::OnceFlag siglexerLexerOnceFlag; -SIGLexerStaticData *siglexerLexerStaticData = nullptr; +::antlr4::internal::OnceFlag prismlexerLexerOnceFlag; +PrismLexerStaticData *prismlexerLexerStaticData = nullptr; -void siglexerLexerInitialize() { - assert(siglexerLexerStaticData == nullptr); - auto staticData = std::make_unique( +void prismlexerLexerInitialize() { + assert(prismlexerLexerStaticData == nullptr); + auto staticData = std::make_unique( std::vector{ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", @@ -443,50 +443,50 @@ void siglexerLexerInitialize() { for (size_t i = 0; i < count; i++) { staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i); } - siglexerLexerStaticData = staticData.release(); + prismlexerLexerStaticData = staticData.release(); } } -SIGLexer::SIGLexer(CharStream *input) : Lexer(input) { - SIGLexer::initialize(); - _interpreter = new atn::LexerATNSimulator(this, *siglexerLexerStaticData->atn, siglexerLexerStaticData->decisionToDFA, siglexerLexerStaticData->sharedContextCache); +PrismLexer::PrismLexer(CharStream *input) : Lexer(input) { + PrismLexer::initialize(); + _interpreter = new atn::LexerATNSimulator(this, *prismlexerLexerStaticData->atn, prismlexerLexerStaticData->decisionToDFA, prismlexerLexerStaticData->sharedContextCache); } -SIGLexer::~SIGLexer() { +PrismLexer::~PrismLexer() { delete _interpreter; } -std::string SIGLexer::getGrammarFileName() const { - return "SIG.g4"; +std::string PrismLexer::getGrammarFileName() const { + return "Prism.g4"; } -const std::vector& SIGLexer::getRuleNames() const { - return siglexerLexerStaticData->ruleNames; +const std::vector& PrismLexer::getRuleNames() const { + return prismlexerLexerStaticData->ruleNames; } -const std::vector& SIGLexer::getChannelNames() const { - return siglexerLexerStaticData->channelNames; +const std::vector& PrismLexer::getChannelNames() const { + return prismlexerLexerStaticData->channelNames; } -const std::vector& SIGLexer::getModeNames() const { - return siglexerLexerStaticData->modeNames; +const std::vector& PrismLexer::getModeNames() const { + return prismlexerLexerStaticData->modeNames; } -const dfa::Vocabulary& SIGLexer::getVocabulary() const { - return siglexerLexerStaticData->vocabulary; +const dfa::Vocabulary& PrismLexer::getVocabulary() const { + return prismlexerLexerStaticData->vocabulary; } -antlr4::atn::SerializedATNView SIGLexer::getSerializedATN() const { - return siglexerLexerStaticData->serializedATN; +antlr4::atn::SerializedATNView PrismLexer::getSerializedATN() const { + return prismlexerLexerStaticData->serializedATN; } -const atn::ATN& SIGLexer::getATN() const { - return *siglexerLexerStaticData->atn; +const atn::ATN& PrismLexer::getATN() const { + return *prismlexerLexerStaticData->atn; } -bool SIGLexer::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { +bool PrismLexer::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { switch (ruleIndex) { case 99: return FUNC_BODYSempred(antlrcpp::downCast(context), predicateIndex); @@ -497,7 +497,7 @@ bool SIGLexer::sempred(RuleContext *context, size_t ruleIndex, size_t predicateI } -bool SIGLexer::FUNC_BODYSempred(antlr4::RuleContext *_localctx, size_t predicateIndex) { +bool PrismLexer::FUNC_BODYSempred(antlr4::RuleContext *_localctx, size_t predicateIndex) { switch (predicateIndex) { case 0: return at_function_body(); @@ -508,6 +508,6 @@ bool SIGLexer::FUNC_BODYSempred(antlr4::RuleContext *_localctx, size_t predicate } -void SIGLexer::initialize() { - ::antlr4::internal::call_once(siglexerLexerOnceFlag, siglexerLexerInitialize); +void PrismLexer::initialize() { + ::antlr4::internal::call_once(prismlexerLexerOnceFlag, prismlexerLexerInitialize); } diff --git a/sources/SIGParser/.antlr/SIGLexer.h b/sources/Prism/.antlr/PrismLexer.h similarity index 94% rename from sources/SIGParser/.antlr/SIGLexer.h rename to sources/Prism/.antlr/PrismLexer.h index 9f12ca1fd..ac0ff7f46 100644 --- a/sources/SIGParser/.antlr/SIGLexer.h +++ b/sources/Prism/.antlr/PrismLexer.h @@ -1,5 +1,5 @@ -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 #pragma once @@ -9,7 +9,7 @@ -class SIGLexer : public antlr4::Lexer { +class PrismLexer : public antlr4::Lexer { public: enum { T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, @@ -32,9 +32,9 @@ class SIGLexer : public antlr4::Lexer { INSERT_BLOCK = 103 }; - explicit SIGLexer(antlr4::CharStream *input); + explicit PrismLexer(antlr4::CharStream *input); - ~SIGLexer() override; + ~PrismLexer() override; size_t last_types[3] = { 0, 0, 0 }; diff --git a/sources/SIGParser/.antlr/SIGLexer.interp b/sources/Prism/.antlr/PrismLexer.interp similarity index 100% rename from sources/SIGParser/.antlr/SIGLexer.interp rename to sources/Prism/.antlr/PrismLexer.interp diff --git a/sources/SIGParser/.antlr/SIGLexer.tokens b/sources/Prism/.antlr/PrismLexer.tokens similarity index 100% rename from sources/SIGParser/.antlr/SIGLexer.tokens rename to sources/Prism/.antlr/PrismLexer.tokens diff --git a/sources/Prism/.antlr/PrismListener.cpp b/sources/Prism/.antlr/PrismListener.cpp new file mode 100644 index 000000000..c45eaefea --- /dev/null +++ b/sources/Prism/.antlr/PrismListener.cpp @@ -0,0 +1,7 @@ + +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 + + +#include "PrismListener.h" + + diff --git a/sources/Prism/.antlr/PrismListener.h b/sources/Prism/.antlr/PrismListener.h new file mode 100644 index 000000000..fac20e35b --- /dev/null +++ b/sources/Prism/.antlr/PrismListener.h @@ -0,0 +1,301 @@ + +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 + +#pragma once + + +#include "antlr4-runtime.h" +#include "PrismParser.h" + + +/** + * This interface defines an abstract listener for a parse tree produced by PrismParser. + */ +class PrismListener : public antlr4::tree::ParseTreeListener { +public: + + virtual void enterParse(PrismParser::ParseContext *ctx) = 0; + virtual void exitParse(PrismParser::ParseContext *ctx) = 0; + + virtual void enterConst_definition(PrismParser::Const_definitionContext *ctx) = 0; + virtual void exitConst_definition(PrismParser::Const_definitionContext *ctx) = 0; + + virtual void enterBind_option(PrismParser::Bind_optionContext *ctx) = 0; + virtual void exitBind_option(PrismParser::Bind_optionContext *ctx) = 0; + + virtual void enterCond_expr(PrismParser::Cond_exprContext *ctx) = 0; + virtual void exitCond_expr(PrismParser::Cond_exprContext *ctx) = 0; + + virtual void enterCond_term(PrismParser::Cond_termContext *ctx) = 0; + virtual void exitCond_term(PrismParser::Cond_termContext *ctx) = 0; + + virtual void enterQualified_ref(PrismParser::Qualified_refContext *ctx) = 0; + virtual void exitQualified_ref(PrismParser::Qualified_refContext *ctx) = 0; + + virtual void enterMember_ref(PrismParser::Member_refContext *ctx) = 0; + virtual void exitMember_ref(PrismParser::Member_refContext *ctx) = 0; + + virtual void enterCond_op(PrismParser::Cond_opContext *ctx) = 0; + virtual void exitCond_op(PrismParser::Cond_opContext *ctx) = 0; + + virtual void enterFlag_value_holder(PrismParser::Flag_value_holderContext *ctx) = 0; + virtual void exitFlag_value_holder(PrismParser::Flag_value_holderContext *ctx) = 0; + + virtual void enterRaw_value(PrismParser::Raw_valueContext *ctx) = 0; + virtual void exitRaw_value(PrismParser::Raw_valueContext *ctx) = 0; + + virtual void enterOptions_assign(PrismParser::Options_assignContext *ctx) = 0; + virtual void exitOptions_assign(PrismParser::Options_assignContext *ctx) = 0; + + virtual void enterOption(PrismParser::OptionContext *ctx) = 0; + virtual void exitOption(PrismParser::OptionContext *ctx) = 0; + + virtual void enterOption_block(PrismParser::Option_blockContext *ctx) = 0; + virtual void exitOption_block(PrismParser::Option_blockContext *ctx) = 0; + + virtual void enterArray_count_id(PrismParser::Array_count_idContext *ctx) = 0; + virtual void exitArray_count_id(PrismParser::Array_count_idContext *ctx) = 0; + + virtual void enterArray(PrismParser::ArrayContext *ctx) = 0; + virtual void exitArray(PrismParser::ArrayContext *ctx) = 0; + + virtual void enterValue_declaration(PrismParser::Value_declarationContext *ctx) = 0; + virtual void exitValue_declaration(PrismParser::Value_declarationContext *ctx) = 0; + + virtual void enterSlot_declaration(PrismParser::Slot_declarationContext *ctx) = 0; + virtual void exitSlot_declaration(PrismParser::Slot_declarationContext *ctx) = 0; + + virtual void enterSampler_declaration(PrismParser::Sampler_declarationContext *ctx) = 0; + virtual void exitSampler_declaration(PrismParser::Sampler_declarationContext *ctx) = 0; + + virtual void enterDefine_declaration(PrismParser::Define_declarationContext *ctx) = 0; + virtual void exitDefine_declaration(PrismParser::Define_declarationContext *ctx) = 0; + + virtual void enterRtv_formats_declaration(PrismParser::Rtv_formats_declarationContext *ctx) = 0; + virtual void exitRtv_formats_declaration(PrismParser::Rtv_formats_declarationContext *ctx) = 0; + + virtual void enterBlends_declaration(PrismParser::Blends_declarationContext *ctx) = 0; + virtual void exitBlends_declaration(PrismParser::Blends_declarationContext *ctx) = 0; + + virtual void enterPointer(PrismParser::PointerContext *ctx) = 0; + virtual void exitPointer(PrismParser::PointerContext *ctx) = 0; + + virtual void enterPso_param(PrismParser::Pso_paramContext *ctx) = 0; + virtual void exitPso_param(PrismParser::Pso_paramContext *ctx) = 0; + + virtual void enterClass_no_template(PrismParser::Class_no_templateContext *ctx) = 0; + virtual void exitClass_no_template(PrismParser::Class_no_templateContext *ctx) = 0; + + virtual void enterType_with_template(PrismParser::Type_with_templateContext *ctx) = 0; + virtual void exitType_with_template(PrismParser::Type_with_templateContext *ctx) = 0; + + virtual void enterInherit_id(PrismParser::Inherit_idContext *ctx) = 0; + virtual void exitInherit_id(PrismParser::Inherit_idContext *ctx) = 0; + + virtual void enterName_id(PrismParser::Name_idContext *ctx) = 0; + virtual void exitName_id(PrismParser::Name_idContext *ctx) = 0; + + virtual void enterOption_id(PrismParser::Option_idContext *ctx) = 0; + virtual void exitOption_id(PrismParser::Option_idContext *ctx) = 0; + + virtual void enterOwner_id(PrismParser::Owner_idContext *ctx) = 0; + virtual void exitOwner_id(PrismParser::Owner_idContext *ctx) = 0; + + virtual void enterTemplate_id(PrismParser::Template_idContext *ctx) = 0; + virtual void exitTemplate_id(PrismParser::Template_idContext *ctx) = 0; + + virtual void enterFunction_id(PrismParser::Function_idContext *ctx) = 0; + virtual void exitFunction_id(PrismParser::Function_idContext *ctx) = 0; + + virtual void enterValue_id(PrismParser::Value_idContext *ctx) = 0; + virtual void exitValue_id(PrismParser::Value_idContext *ctx) = 0; + + virtual void enterValue_id_ignore(PrismParser::Value_id_ignoreContext *ctx) = 0; + virtual void exitValue_id_ignore(PrismParser::Value_id_ignoreContext *ctx) = 0; + + virtual void enterType_id(PrismParser::Type_idContext *ctx) = 0; + virtual void exitType_id(PrismParser::Type_idContext *ctx) = 0; + + virtual void enterInsert_block(PrismParser::Insert_blockContext *ctx) = 0; + virtual void exitInsert_block(PrismParser::Insert_blockContext *ctx) = 0; + + virtual void enterShader_path(PrismParser::Shader_pathContext *ctx) = 0; + virtual void exitShader_path(PrismParser::Shader_pathContext *ctx) = 0; + + virtual void enterInherit(PrismParser::InheritContext *ctx) = 0; + virtual void exitInherit(PrismParser::InheritContext *ctx) = 0; + + virtual void enterLayout_stat(PrismParser::Layout_statContext *ctx) = 0; + virtual void exitLayout_stat(PrismParser::Layout_statContext *ctx) = 0; + + virtual void enterLayout_block(PrismParser::Layout_blockContext *ctx) = 0; + virtual void exitLayout_block(PrismParser::Layout_blockContext *ctx) = 0; + + virtual void enterLayout_definition(PrismParser::Layout_definitionContext *ctx) = 0; + virtual void exitLayout_definition(PrismParser::Layout_definitionContext *ctx) = 0; + + virtual void enterTable_stat(PrismParser::Table_statContext *ctx) = 0; + virtual void exitTable_stat(PrismParser::Table_statContext *ctx) = 0; + + virtual void enterFunction_definition(PrismParser::Function_definitionContext *ctx) = 0; + virtual void exitFunction_definition(PrismParser::Function_definitionContext *ctx) = 0; + + virtual void enterFunction_params(PrismParser::Function_paramsContext *ctx) = 0; + virtual void exitFunction_params(PrismParser::Function_paramsContext *ctx) = 0; + + virtual void enterFunction_semantic(PrismParser::Function_semanticContext *ctx) = 0; + virtual void exitFunction_semantic(PrismParser::Function_semanticContext *ctx) = 0; + + virtual void enterTable_block(PrismParser::Table_blockContext *ctx) = 0; + virtual void exitTable_block(PrismParser::Table_blockContext *ctx) = 0; + + virtual void enterTable_definition(PrismParser::Table_definitionContext *ctx) = 0; + virtual void exitTable_definition(PrismParser::Table_definitionContext *ctx) = 0; + + virtual void enterRt_color_declaration(PrismParser::Rt_color_declarationContext *ctx) = 0; + virtual void exitRt_color_declaration(PrismParser::Rt_color_declarationContext *ctx) = 0; + + virtual void enterRt_ds_declaration(PrismParser::Rt_ds_declarationContext *ctx) = 0; + virtual void exitRt_ds_declaration(PrismParser::Rt_ds_declarationContext *ctx) = 0; + + virtual void enterRt_stat(PrismParser::Rt_statContext *ctx) = 0; + virtual void exitRt_stat(PrismParser::Rt_statContext *ctx) = 0; + + virtual void enterRt_block(PrismParser::Rt_blockContext *ctx) = 0; + virtual void exitRt_block(PrismParser::Rt_blockContext *ctx) = 0; + + virtual void enterRt_definition(PrismParser::Rt_definitionContext *ctx) = 0; + virtual void exitRt_definition(PrismParser::Rt_definitionContext *ctx) = 0; + + virtual void enterArray_value_holder(PrismParser::Array_value_holderContext *ctx) = 0; + virtual void exitArray_value_holder(PrismParser::Array_value_holderContext *ctx) = 0; + + virtual void enterArray_value_ids(PrismParser::Array_value_idsContext *ctx) = 0; + virtual void exitArray_value_ids(PrismParser::Array_value_idsContext *ctx) = 0; + + virtual void enterRoot_sig(PrismParser::Root_sigContext *ctx) = 0; + virtual void exitRoot_sig(PrismParser::Root_sigContext *ctx) = 0; + + virtual void enterShader(PrismParser::ShaderContext *ctx) = 0; + virtual void exitShader(PrismParser::ShaderContext *ctx) = 0; + + virtual void enterCompute_pso_stat(PrismParser::Compute_pso_statContext *ctx) = 0; + virtual void exitCompute_pso_stat(PrismParser::Compute_pso_statContext *ctx) = 0; + + virtual void enterCompute_pso_block(PrismParser::Compute_pso_blockContext *ctx) = 0; + virtual void exitCompute_pso_block(PrismParser::Compute_pso_blockContext *ctx) = 0; + + virtual void enterCompute_pso_definition(PrismParser::Compute_pso_definitionContext *ctx) = 0; + virtual void exitCompute_pso_definition(PrismParser::Compute_pso_definitionContext *ctx) = 0; + + virtual void enterGraphics_pso_stat(PrismParser::Graphics_pso_statContext *ctx) = 0; + virtual void exitGraphics_pso_stat(PrismParser::Graphics_pso_statContext *ctx) = 0; + + virtual void enterGraphics_pso_block(PrismParser::Graphics_pso_blockContext *ctx) = 0; + virtual void exitGraphics_pso_block(PrismParser::Graphics_pso_blockContext *ctx) = 0; + + virtual void enterGraphics_pso_definition(PrismParser::Graphics_pso_definitionContext *ctx) = 0; + virtual void exitGraphics_pso_definition(PrismParser::Graphics_pso_definitionContext *ctx) = 0; + + virtual void enterRtx_pso_stat(PrismParser::Rtx_pso_statContext *ctx) = 0; + virtual void exitRtx_pso_stat(PrismParser::Rtx_pso_statContext *ctx) = 0; + + virtual void enterRtx_pso_block(PrismParser::Rtx_pso_blockContext *ctx) = 0; + virtual void exitRtx_pso_block(PrismParser::Rtx_pso_blockContext *ctx) = 0; + + virtual void enterRtx_pso_definition(PrismParser::Rtx_pso_definitionContext *ctx) = 0; + virtual void exitRtx_pso_definition(PrismParser::Rtx_pso_definitionContext *ctx) = 0; + + virtual void enterNode_param_id(PrismParser::Node_param_idContext *ctx) = 0; + virtual void exitNode_param_id(PrismParser::Node_param_idContext *ctx) = 0; + + virtual void enterNode_param(PrismParser::Node_paramContext *ctx) = 0; + virtual void exitNode_param(PrismParser::Node_paramContext *ctx) = 0; + + virtual void enterNode_output_decl(PrismParser::Node_output_declContext *ctx) = 0; + virtual void exitNode_output_decl(PrismParser::Node_output_declContext *ctx) = 0; + + virtual void enterNode_stat(PrismParser::Node_statContext *ctx) = 0; + virtual void exitNode_stat(PrismParser::Node_statContext *ctx) = 0; + + virtual void enterNode_block(PrismParser::Node_blockContext *ctx) = 0; + virtual void exitNode_block(PrismParser::Node_blockContext *ctx) = 0; + + virtual void enterNode_definition(PrismParser::Node_definitionContext *ctx) = 0; + virtual void exitNode_definition(PrismParser::Node_definitionContext *ctx) = 0; + + virtual void enterWorkgraph_pso_stat(PrismParser::Workgraph_pso_statContext *ctx) = 0; + virtual void exitWorkgraph_pso_stat(PrismParser::Workgraph_pso_statContext *ctx) = 0; + + virtual void enterWorkgraph_pso_block(PrismParser::Workgraph_pso_blockContext *ctx) = 0; + virtual void exitWorkgraph_pso_block(PrismParser::Workgraph_pso_blockContext *ctx) = 0; + + virtual void enterWorkgraph_pso_definition(PrismParser::Workgraph_pso_definitionContext *ctx) = 0; + virtual void exitWorkgraph_pso_definition(PrismParser::Workgraph_pso_definitionContext *ctx) = 0; + + virtual void enterRtx_pass_stat(PrismParser::Rtx_pass_statContext *ctx) = 0; + virtual void exitRtx_pass_stat(PrismParser::Rtx_pass_statContext *ctx) = 0; + + virtual void enterRtx_pass_block(PrismParser::Rtx_pass_blockContext *ctx) = 0; + virtual void exitRtx_pass_block(PrismParser::Rtx_pass_blockContext *ctx) = 0; + + virtual void enterRtx_pass_definition(PrismParser::Rtx_pass_definitionContext *ctx) = 0; + virtual void exitRtx_pass_definition(PrismParser::Rtx_pass_definitionContext *ctx) = 0; + + virtual void enterRtx_raygen_stat(PrismParser::Rtx_raygen_statContext *ctx) = 0; + virtual void exitRtx_raygen_stat(PrismParser::Rtx_raygen_statContext *ctx) = 0; + + virtual void enterRtx_raygen_block(PrismParser::Rtx_raygen_blockContext *ctx) = 0; + virtual void exitRtx_raygen_block(PrismParser::Rtx_raygen_blockContext *ctx) = 0; + + virtual void enterRtx_raygen_definition(PrismParser::Rtx_raygen_definitionContext *ctx) = 0; + virtual void exitRtx_raygen_definition(PrismParser::Rtx_raygen_definitionContext *ctx) = 0; + + virtual void enterView_declaration(PrismParser::View_declarationContext *ctx) = 0; + virtual void exitView_declaration(PrismParser::View_declarationContext *ctx) = 0; + + virtual void enterView_stat(PrismParser::View_statContext *ctx) = 0; + virtual void exitView_stat(PrismParser::View_statContext *ctx) = 0; + + virtual void enterView_block(PrismParser::View_blockContext *ctx) = 0; + virtual void exitView_block(PrismParser::View_blockContext *ctx) = 0; + + virtual void enterView_definition(PrismParser::View_definitionContext *ctx) = 0; + virtual void exitView_definition(PrismParser::View_definitionContext *ctx) = 0; + + virtual void enterPass_definition(PrismParser::Pass_definitionContext *ctx) = 0; + virtual void exitPass_definition(PrismParser::Pass_definitionContext *ctx) = 0; + + virtual void enterPipeline_stat(PrismParser::Pipeline_statContext *ctx) = 0; + virtual void exitPipeline_stat(PrismParser::Pipeline_statContext *ctx) = 0; + + virtual void enterPipeline_block(PrismParser::Pipeline_blockContext *ctx) = 0; + virtual void exitPipeline_block(PrismParser::Pipeline_blockContext *ctx) = 0; + + virtual void enterPipeline_definition(PrismParser::Pipeline_definitionContext *ctx) = 0; + virtual void exitPipeline_definition(PrismParser::Pipeline_definitionContext *ctx) = 0; + + virtual void enterEnum_value_declaration(PrismParser::Enum_value_declarationContext *ctx) = 0; + virtual void exitEnum_value_declaration(PrismParser::Enum_value_declarationContext *ctx) = 0; + + virtual void enterEnum_stat(PrismParser::Enum_statContext *ctx) = 0; + virtual void exitEnum_stat(PrismParser::Enum_statContext *ctx) = 0; + + virtual void enterEnum_block(PrismParser::Enum_blockContext *ctx) = 0; + virtual void exitEnum_block(PrismParser::Enum_blockContext *ctx) = 0; + + virtual void enterEnum_definition(PrismParser::Enum_definitionContext *ctx) = 0; + virtual void exitEnum_definition(PrismParser::Enum_definitionContext *ctx) = 0; + + virtual void enterShader_type(PrismParser::Shader_typeContext *ctx) = 0; + virtual void exitShader_type(PrismParser::Shader_typeContext *ctx) = 0; + + virtual void enterPso_param_id(PrismParser::Pso_param_idContext *ctx) = 0; + virtual void exitPso_param_id(PrismParser::Pso_param_idContext *ctx) = 0; + + virtual void enterBool_type(PrismParser::Bool_typeContext *ctx) = 0; + virtual void exitBool_type(PrismParser::Bool_typeContext *ctx) = 0; + + +}; + diff --git a/sources/SIGParser/.antlr/SIGParser.cpp b/sources/Prism/.antlr/PrismParser.cpp similarity index 55% rename from sources/SIGParser/.antlr/SIGParser.cpp rename to sources/Prism/.antlr/PrismParser.cpp index d587bfc4b..cd64fc2bd 100644 --- a/sources/SIGParser/.antlr/SIGParser.cpp +++ b/sources/Prism/.antlr/PrismParser.cpp @@ -1,11 +1,11 @@ -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 -#include "SIGListener.h" -#include "SIGVisitor.h" +#include "PrismListener.h" +#include "PrismVisitor.h" -#include "SIGParser.h" +#include "PrismParser.h" using namespace antlrcpp; @@ -14,18 +14,18 @@ using namespace antlr4; namespace { -struct SIGParserStaticData final { - SIGParserStaticData(std::vector ruleNames, +struct PrismParserStaticData final { + PrismParserStaticData(std::vector ruleNames, std::vector literalNames, std::vector symbolicNames) : ruleNames(std::move(ruleNames)), literalNames(std::move(literalNames)), symbolicNames(std::move(symbolicNames)), vocabulary(this->literalNames, this->symbolicNames) {} - SIGParserStaticData(const SIGParserStaticData&) = delete; - SIGParserStaticData(SIGParserStaticData&&) = delete; - SIGParserStaticData& operator=(const SIGParserStaticData&) = delete; - SIGParserStaticData& operator=(SIGParserStaticData&&) = delete; + PrismParserStaticData(const PrismParserStaticData&) = delete; + PrismParserStaticData(PrismParserStaticData&&) = delete; + PrismParserStaticData& operator=(const PrismParserStaticData&) = delete; + PrismParserStaticData& operator=(PrismParserStaticData&&) = delete; std::vector decisionToDFA; antlr4::atn::PredictionContextCache sharedContextCache; @@ -37,12 +37,12 @@ struct SIGParserStaticData final { std::unique_ptr atn; }; -::antlr4::internal::OnceFlag sigParserOnceFlag; -SIGParserStaticData *sigParserStaticData = nullptr; +::antlr4::internal::OnceFlag prismParserOnceFlag; +PrismParserStaticData *prismParserStaticData = nullptr; -void sigParserInitialize() { - assert(sigParserStaticData == nullptr); - auto staticData = std::make_unique( +void prismParserInitialize() { + assert(prismParserStaticData == nullptr); + auto staticData = std::make_unique( std::vector{ "parse", "const_definition", "bind_option", "cond_expr", "cond_term", "qualified_ref", "member_ref", "cond_op", "flag_value_holder", "raw_value", @@ -399,201 +399,201 @@ void sigParserInitialize() { for (size_t i = 0; i < count; i++) { staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i); } - sigParserStaticData = staticData.release(); + prismParserStaticData = staticData.release(); } } -SIGParser::SIGParser(TokenStream *input) : SIGParser(input, antlr4::atn::ParserATNSimulatorOptions()) {} +PrismParser::PrismParser(TokenStream *input) : PrismParser(input, antlr4::atn::ParserATNSimulatorOptions()) {} -SIGParser::SIGParser(TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options) : Parser(input) { - SIGParser::initialize(); - _interpreter = new atn::ParserATNSimulator(this, *sigParserStaticData->atn, sigParserStaticData->decisionToDFA, sigParserStaticData->sharedContextCache, options); +PrismParser::PrismParser(TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options) : Parser(input) { + PrismParser::initialize(); + _interpreter = new atn::ParserATNSimulator(this, *prismParserStaticData->atn, prismParserStaticData->decisionToDFA, prismParserStaticData->sharedContextCache, options); } -SIGParser::~SIGParser() { +PrismParser::~PrismParser() { delete _interpreter; } -const atn::ATN& SIGParser::getATN() const { - return *sigParserStaticData->atn; +const atn::ATN& PrismParser::getATN() const { + return *prismParserStaticData->atn; } -std::string SIGParser::getGrammarFileName() const { - return "SIG.g4"; +std::string PrismParser::getGrammarFileName() const { + return "Prism.g4"; } -const std::vector& SIGParser::getRuleNames() const { - return sigParserStaticData->ruleNames; +const std::vector& PrismParser::getRuleNames() const { + return prismParserStaticData->ruleNames; } -const dfa::Vocabulary& SIGParser::getVocabulary() const { - return sigParserStaticData->vocabulary; +const dfa::Vocabulary& PrismParser::getVocabulary() const { + return prismParserStaticData->vocabulary; } -antlr4::atn::SerializedATNView SIGParser::getSerializedATN() const { - return sigParserStaticData->serializedATN; +antlr4::atn::SerializedATNView PrismParser::getSerializedATN() const { + return prismParserStaticData->serializedATN; } //----------------- ParseContext ------------------------------------------------------------------ -SIGParser::ParseContext::ParseContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::ParseContext::ParseContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::ParseContext::EOF() { - return getToken(SIGParser::EOF, 0); +tree::TerminalNode* PrismParser::ParseContext::EOF() { + return getToken(PrismParser::EOF, 0); } -std::vector SIGParser::ParseContext::layout_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::layout_definition() { + return getRuleContexts(); } -SIGParser::Layout_definitionContext* SIGParser::ParseContext::layout_definition(size_t i) { - return getRuleContext(i); +PrismParser::Layout_definitionContext* PrismParser::ParseContext::layout_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::table_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::table_definition() { + return getRuleContexts(); } -SIGParser::Table_definitionContext* SIGParser::ParseContext::table_definition(size_t i) { - return getRuleContext(i); +PrismParser::Table_definitionContext* PrismParser::ParseContext::table_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::rt_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::rt_definition() { + return getRuleContexts(); } -SIGParser::Rt_definitionContext* SIGParser::ParseContext::rt_definition(size_t i) { - return getRuleContext(i); +PrismParser::Rt_definitionContext* PrismParser::ParseContext::rt_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::workgraph_pso_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::workgraph_pso_definition() { + return getRuleContexts(); } -SIGParser::Workgraph_pso_definitionContext* SIGParser::ParseContext::workgraph_pso_definition(size_t i) { - return getRuleContext(i); +PrismParser::Workgraph_pso_definitionContext* PrismParser::ParseContext::workgraph_pso_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::compute_pso_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::compute_pso_definition() { + return getRuleContexts(); } -SIGParser::Compute_pso_definitionContext* SIGParser::ParseContext::compute_pso_definition(size_t i) { - return getRuleContext(i); +PrismParser::Compute_pso_definitionContext* PrismParser::ParseContext::compute_pso_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::graphics_pso_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::graphics_pso_definition() { + return getRuleContexts(); } -SIGParser::Graphics_pso_definitionContext* SIGParser::ParseContext::graphics_pso_definition(size_t i) { - return getRuleContext(i); +PrismParser::Graphics_pso_definitionContext* PrismParser::ParseContext::graphics_pso_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::rtx_pso_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::rtx_pso_definition() { + return getRuleContexts(); } -SIGParser::Rtx_pso_definitionContext* SIGParser::ParseContext::rtx_pso_definition(size_t i) { - return getRuleContext(i); +PrismParser::Rtx_pso_definitionContext* PrismParser::ParseContext::rtx_pso_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::rtx_pass_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::rtx_pass_definition() { + return getRuleContexts(); } -SIGParser::Rtx_pass_definitionContext* SIGParser::ParseContext::rtx_pass_definition(size_t i) { - return getRuleContext(i); +PrismParser::Rtx_pass_definitionContext* PrismParser::ParseContext::rtx_pass_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::rtx_raygen_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::rtx_raygen_definition() { + return getRuleContexts(); } -SIGParser::Rtx_raygen_definitionContext* SIGParser::ParseContext::rtx_raygen_definition(size_t i) { - return getRuleContext(i); +PrismParser::Rtx_raygen_definitionContext* PrismParser::ParseContext::rtx_raygen_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::pass_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::pass_definition() { + return getRuleContexts(); } -SIGParser::Pass_definitionContext* SIGParser::ParseContext::pass_definition(size_t i) { - return getRuleContext(i); +PrismParser::Pass_definitionContext* PrismParser::ParseContext::pass_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::view_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::view_definition() { + return getRuleContexts(); } -SIGParser::View_definitionContext* SIGParser::ParseContext::view_definition(size_t i) { - return getRuleContext(i); +PrismParser::View_definitionContext* PrismParser::ParseContext::view_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::pipeline_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::pipeline_definition() { + return getRuleContexts(); } -SIGParser::Pipeline_definitionContext* SIGParser::ParseContext::pipeline_definition(size_t i) { - return getRuleContext(i); +PrismParser::Pipeline_definitionContext* PrismParser::ParseContext::pipeline_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::enum_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::enum_definition() { + return getRuleContexts(); } -SIGParser::Enum_definitionContext* SIGParser::ParseContext::enum_definition(size_t i) { - return getRuleContext(i); +PrismParser::Enum_definitionContext* PrismParser::ParseContext::enum_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::const_definition() { - return getRuleContexts(); +std::vector PrismParser::ParseContext::const_definition() { + return getRuleContexts(); } -SIGParser::Const_definitionContext* SIGParser::ParseContext::const_definition(size_t i) { - return getRuleContext(i); +PrismParser::Const_definitionContext* PrismParser::ParseContext::const_definition(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::ParseContext::COMMENT() { - return getTokens(SIGParser::COMMENT); +std::vector PrismParser::ParseContext::COMMENT() { + return getTokens(PrismParser::COMMENT); } -tree::TerminalNode* SIGParser::ParseContext::COMMENT(size_t i) { - return getToken(SIGParser::COMMENT, i); +tree::TerminalNode* PrismParser::ParseContext::COMMENT(size_t i) { + return getToken(PrismParser::COMMENT, i); } -size_t SIGParser::ParseContext::getRuleIndex() const { - return SIGParser::RuleParse; +size_t PrismParser::ParseContext::getRuleIndex() const { + return PrismParser::RuleParse; } -void SIGParser::ParseContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::ParseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterParse(this); } -void SIGParser::ParseContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::ParseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitParse(this); } -std::any SIGParser::ParseContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::ParseContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitParse(this); else return visitor->visitChildren(this); } -SIGParser::ParseContext* SIGParser::parse() { +PrismParser::ParseContext* PrismParser::parse() { ParseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 0, SIGParser::RuleParse); + enterRule(_localctx, 0, PrismParser::RuleParse); size_t _la = 0; #if __cplusplus > 201703L @@ -608,7 +608,7 @@ SIGParser::ParseContext* SIGParser::parse() { setState(205); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::T__0 || (((_la - 68) & ~ 0x3fULL) == 0) && + while (_la == PrismParser::T__0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 546039777) != 0) { setState(203); _errHandler->sync(this); @@ -699,7 +699,7 @@ SIGParser::ParseContext* SIGParser::parse() { case 15: { setState(202); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -711,7 +711,7 @@ SIGParser::ParseContext* SIGParser::parse() { _la = _input->LA(1); } setState(208); - match(SIGParser::EOF); + match(PrismParser::EOF); } catch (RecognitionException &e) { @@ -725,50 +725,50 @@ SIGParser::ParseContext* SIGParser::parse() { //----------------- Const_definitionContext ------------------------------------------------------------------ -SIGParser::Const_definitionContext::Const_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Const_definitionContext::Const_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Name_idContext* SIGParser::Const_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Const_definitionContext::name_id() { + return getRuleContext(0); } -SIGParser::Options_assignContext* SIGParser::Const_definitionContext::options_assign() { - return getRuleContext(0); +PrismParser::Options_assignContext* PrismParser::Const_definitionContext::options_assign() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Const_definitionContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Const_definitionContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Const_definitionContext::getRuleIndex() const { - return SIGParser::RuleConst_definition; +size_t PrismParser::Const_definitionContext::getRuleIndex() const { + return PrismParser::RuleConst_definition; } -void SIGParser::Const_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Const_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterConst_definition(this); } -void SIGParser::Const_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Const_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitConst_definition(this); } -std::any SIGParser::Const_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Const_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitConst_definition(this); else return visitor->visitChildren(this); } -SIGParser::Const_definitionContext* SIGParser::const_definition() { +PrismParser::Const_definitionContext* PrismParser::const_definition() { Const_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 2, SIGParser::RuleConst_definition); + enterRule(_localctx, 2, PrismParser::RuleConst_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -780,13 +780,13 @@ SIGParser::Const_definitionContext* SIGParser::const_definition() { try { enterOuterAlt(_localctx, 1); setState(210); - match(SIGParser::T__0); + match(PrismParser::T__0); setState(211); name_id(); setState(212); options_assign(); setState(213); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -800,66 +800,66 @@ SIGParser::Const_definitionContext* SIGParser::const_definition() { //----------------- Bind_optionContext ------------------------------------------------------------------ -SIGParser::Bind_optionContext::Bind_optionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Bind_optionContext::Bind_optionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Bind_optionContext::flag_value_holder() { - return getRuleContexts(); +std::vector PrismParser::Bind_optionContext::flag_value_holder() { + return getRuleContexts(); } -SIGParser::Flag_value_holderContext* SIGParser::Bind_optionContext::flag_value_holder(size_t i) { - return getRuleContext(i); +PrismParser::Flag_value_holderContext* PrismParser::Bind_optionContext::flag_value_holder(size_t i) { + return getRuleContext(i); } -SIGParser::Owner_idContext* SIGParser::Bind_optionContext::owner_id() { - return getRuleContext(0); +PrismParser::Owner_idContext* PrismParser::Bind_optionContext::owner_id() { + return getRuleContext(0); } -std::vector SIGParser::Bind_optionContext::PIPE() { - return getTokens(SIGParser::PIPE); +std::vector PrismParser::Bind_optionContext::PIPE() { + return getTokens(PrismParser::PIPE); } -tree::TerminalNode* SIGParser::Bind_optionContext::PIPE(size_t i) { - return getToken(SIGParser::PIPE, i); +tree::TerminalNode* PrismParser::Bind_optionContext::PIPE(size_t i) { + return getToken(PrismParser::PIPE, i); } -SIGParser::Raw_valueContext* SIGParser::Bind_optionContext::raw_value() { - return getRuleContext(0); +PrismParser::Raw_valueContext* PrismParser::Bind_optionContext::raw_value() { + return getRuleContext(0); } -SIGParser::Cond_exprContext* SIGParser::Bind_optionContext::cond_expr() { - return getRuleContext(0); +PrismParser::Cond_exprContext* PrismParser::Bind_optionContext::cond_expr() { + return getRuleContext(0); } -size_t SIGParser::Bind_optionContext::getRuleIndex() const { - return SIGParser::RuleBind_option; +size_t PrismParser::Bind_optionContext::getRuleIndex() const { + return PrismParser::RuleBind_option; } -void SIGParser::Bind_optionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Bind_optionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterBind_option(this); } -void SIGParser::Bind_optionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Bind_optionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitBind_option(this); } -std::any SIGParser::Bind_optionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Bind_optionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBind_option(this); else return visitor->visitChildren(this); } -SIGParser::Bind_optionContext* SIGParser::bind_option() { +PrismParser::Bind_optionContext* PrismParser::bind_option() { Bind_optionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 4, SIGParser::RuleBind_option); + enterRule(_localctx, 4, PrismParser::RuleBind_option); size_t _la = 0; #if __cplusplus > 201703L @@ -883,7 +883,7 @@ SIGParser::Bind_optionContext* SIGParser::bind_option() { setState(215); owner_id(); setState(216); - match(SIGParser::T__1); + match(PrismParser::T__1); break; } @@ -897,13 +897,13 @@ SIGParser::Bind_optionContext* SIGParser::bind_option() { _la = _input->LA(1); do { setState(221); - match(SIGParser::PIPE); + match(PrismParser::PIPE); setState(222); flag_value_holder(); setState(225); _errHandler->sync(this); _la = _input->LA(1); - } while (_la == SIGParser::PIPE); + } while (_la == PrismParser::PIPE); break; } @@ -937,46 +937,46 @@ SIGParser::Bind_optionContext* SIGParser::bind_option() { //----------------- Cond_exprContext ------------------------------------------------------------------ -SIGParser::Cond_exprContext::Cond_exprContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Cond_exprContext::Cond_exprContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Cond_exprContext::cond_term() { - return getRuleContexts(); +std::vector PrismParser::Cond_exprContext::cond_term() { + return getRuleContexts(); } -SIGParser::Cond_termContext* SIGParser::Cond_exprContext::cond_term(size_t i) { - return getRuleContext(i); +PrismParser::Cond_termContext* PrismParser::Cond_exprContext::cond_term(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Cond_exprContext::getRuleIndex() const { - return SIGParser::RuleCond_expr; +size_t PrismParser::Cond_exprContext::getRuleIndex() const { + return PrismParser::RuleCond_expr; } -void SIGParser::Cond_exprContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Cond_exprContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCond_expr(this); } -void SIGParser::Cond_exprContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Cond_exprContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCond_expr(this); } -std::any SIGParser::Cond_exprContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Cond_exprContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCond_expr(this); else return visitor->visitChildren(this); } -SIGParser::Cond_exprContext* SIGParser::cond_expr() { +PrismParser::Cond_exprContext* PrismParser::cond_expr() { Cond_exprContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 6, SIGParser::RuleCond_expr); + enterRule(_localctx, 6, PrismParser::RuleCond_expr); size_t _la = 0; #if __cplusplus > 201703L @@ -1013,58 +1013,58 @@ SIGParser::Cond_exprContext* SIGParser::cond_expr() { //----------------- Cond_termContext ------------------------------------------------------------------ -SIGParser::Cond_termContext::Cond_termContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Cond_termContext::Cond_termContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Qualified_refContext* SIGParser::Cond_termContext::qualified_ref() { - return getRuleContext(0); +PrismParser::Qualified_refContext* PrismParser::Cond_termContext::qualified_ref() { + return getRuleContext(0); } -SIGParser::Function_idContext* SIGParser::Cond_termContext::function_id() { - return getRuleContext(0); +PrismParser::Function_idContext* PrismParser::Cond_termContext::function_id() { + return getRuleContext(0); } -SIGParser::Member_refContext* SIGParser::Cond_termContext::member_ref() { - return getRuleContext(0); +PrismParser::Member_refContext* PrismParser::Cond_termContext::member_ref() { + return getRuleContext(0); } -SIGParser::Value_idContext* SIGParser::Cond_termContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Cond_termContext::value_id() { + return getRuleContext(0); } -SIGParser::Cond_opContext* SIGParser::Cond_termContext::cond_op() { - return getRuleContext(0); +PrismParser::Cond_opContext* PrismParser::Cond_termContext::cond_op() { + return getRuleContext(0); } -size_t SIGParser::Cond_termContext::getRuleIndex() const { - return SIGParser::RuleCond_term; +size_t PrismParser::Cond_termContext::getRuleIndex() const { + return PrismParser::RuleCond_term; } -void SIGParser::Cond_termContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Cond_termContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCond_term(this); } -void SIGParser::Cond_termContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Cond_termContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCond_term(this); } -std::any SIGParser::Cond_termContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Cond_termContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCond_term(this); else return visitor->visitChildren(this); } -SIGParser::Cond_termContext* SIGParser::cond_term() { +PrismParser::Cond_termContext* PrismParser::cond_term() { Cond_termContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 8, SIGParser::RuleCond_term); + enterRule(_localctx, 8, PrismParser::RuleCond_term); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1128,46 +1128,46 @@ SIGParser::Cond_termContext* SIGParser::cond_term() { //----------------- Qualified_refContext ------------------------------------------------------------------ -SIGParser::Qualified_refContext::Qualified_refContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Qualified_refContext::Qualified_refContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Owner_idContext* SIGParser::Qualified_refContext::owner_id() { - return getRuleContext(0); +PrismParser::Owner_idContext* PrismParser::Qualified_refContext::owner_id() { + return getRuleContext(0); } -SIGParser::Value_idContext* SIGParser::Qualified_refContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Qualified_refContext::value_id() { + return getRuleContext(0); } -size_t SIGParser::Qualified_refContext::getRuleIndex() const { - return SIGParser::RuleQualified_ref; +size_t PrismParser::Qualified_refContext::getRuleIndex() const { + return PrismParser::RuleQualified_ref; } -void SIGParser::Qualified_refContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Qualified_refContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterQualified_ref(this); } -void SIGParser::Qualified_refContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Qualified_refContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitQualified_ref(this); } -std::any SIGParser::Qualified_refContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Qualified_refContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitQualified_ref(this); else return visitor->visitChildren(this); } -SIGParser::Qualified_refContext* SIGParser::qualified_ref() { +PrismParser::Qualified_refContext* PrismParser::qualified_ref() { Qualified_refContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 10, SIGParser::RuleQualified_ref); + enterRule(_localctx, 10, PrismParser::RuleQualified_ref); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1181,7 +1181,7 @@ SIGParser::Qualified_refContext* SIGParser::qualified_ref() { setState(243); owner_id(); setState(244); - match(SIGParser::T__1); + match(PrismParser::T__1); setState(245); value_id(); @@ -1197,50 +1197,50 @@ SIGParser::Qualified_refContext* SIGParser::qualified_ref() { //----------------- Member_refContext ------------------------------------------------------------------ -SIGParser::Member_refContext::Member_refContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Member_refContext::Member_refContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Member_refContext::name_id() { - return getRuleContexts(); +std::vector PrismParser::Member_refContext::name_id() { + return getRuleContexts(); } -SIGParser::Name_idContext* SIGParser::Member_refContext::name_id(size_t i) { - return getRuleContext(i); +PrismParser::Name_idContext* PrismParser::Member_refContext::name_id(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* SIGParser::Member_refContext::DOT() { - return getToken(SIGParser::DOT, 0); +tree::TerminalNode* PrismParser::Member_refContext::DOT() { + return getToken(PrismParser::DOT, 0); } -size_t SIGParser::Member_refContext::getRuleIndex() const { - return SIGParser::RuleMember_ref; +size_t PrismParser::Member_refContext::getRuleIndex() const { + return PrismParser::RuleMember_ref; } -void SIGParser::Member_refContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Member_refContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterMember_ref(this); } -void SIGParser::Member_refContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Member_refContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitMember_ref(this); } -std::any SIGParser::Member_refContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Member_refContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitMember_ref(this); else return visitor->visitChildren(this); } -SIGParser::Member_refContext* SIGParser::member_ref() { +PrismParser::Member_refContext* PrismParser::member_ref() { Member_refContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 12, SIGParser::RuleMember_ref); + enterRule(_localctx, 12, PrismParser::RuleMember_ref); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1254,7 +1254,7 @@ SIGParser::Member_refContext* SIGParser::member_ref() { setState(247); name_id(); setState(248); - match(SIGParser::DOT); + match(PrismParser::DOT); setState(249); name_id(); @@ -1270,82 +1270,82 @@ SIGParser::Member_refContext* SIGParser::member_ref() { //----------------- Cond_opContext ------------------------------------------------------------------ -SIGParser::Cond_opContext::Cond_opContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Cond_opContext::Cond_opContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Cond_opContext::AND() { - return getToken(SIGParser::AND, 0); +tree::TerminalNode* PrismParser::Cond_opContext::AND() { + return getToken(PrismParser::AND, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::OR() { - return getToken(SIGParser::OR, 0); +tree::TerminalNode* PrismParser::Cond_opContext::OR() { + return getToken(PrismParser::OR, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::NOT() { - return getToken(SIGParser::NOT, 0); +tree::TerminalNode* PrismParser::Cond_opContext::NOT() { + return getToken(PrismParser::NOT, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::EQ() { - return getToken(SIGParser::EQ, 0); +tree::TerminalNode* PrismParser::Cond_opContext::EQ() { + return getToken(PrismParser::EQ, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::NEQ() { - return getToken(SIGParser::NEQ, 0); +tree::TerminalNode* PrismParser::Cond_opContext::NEQ() { + return getToken(PrismParser::NEQ, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::GTEQ() { - return getToken(SIGParser::GTEQ, 0); +tree::TerminalNode* PrismParser::Cond_opContext::GTEQ() { + return getToken(PrismParser::GTEQ, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::LTEQ() { - return getToken(SIGParser::LTEQ, 0); +tree::TerminalNode* PrismParser::Cond_opContext::LTEQ() { + return getToken(PrismParser::LTEQ, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::GT() { - return getToken(SIGParser::GT, 0); +tree::TerminalNode* PrismParser::Cond_opContext::GT() { + return getToken(PrismParser::GT, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::LT() { - return getToken(SIGParser::LT, 0); +tree::TerminalNode* PrismParser::Cond_opContext::LT() { + return getToken(PrismParser::LT, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::OPAR() { - return getToken(SIGParser::OPAR, 0); +tree::TerminalNode* PrismParser::Cond_opContext::OPAR() { + return getToken(PrismParser::OPAR, 0); } -tree::TerminalNode* SIGParser::Cond_opContext::CPAR() { - return getToken(SIGParser::CPAR, 0); +tree::TerminalNode* PrismParser::Cond_opContext::CPAR() { + return getToken(PrismParser::CPAR, 0); } -size_t SIGParser::Cond_opContext::getRuleIndex() const { - return SIGParser::RuleCond_op; +size_t PrismParser::Cond_opContext::getRuleIndex() const { + return PrismParser::RuleCond_op; } -void SIGParser::Cond_opContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Cond_opContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCond_op(this); } -void SIGParser::Cond_opContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Cond_opContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCond_op(this); } -std::any SIGParser::Cond_opContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Cond_opContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCond_op(this); else return visitor->visitChildren(this); } -SIGParser::Cond_opContext* SIGParser::cond_op() { +PrismParser::Cond_opContext* PrismParser::cond_op() { Cond_opContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 14, SIGParser::RuleCond_op); + enterRule(_localctx, 14, PrismParser::RuleCond_op); size_t _la = 0; #if __cplusplus > 201703L @@ -1380,42 +1380,42 @@ SIGParser::Cond_opContext* SIGParser::cond_op() { //----------------- Flag_value_holderContext ------------------------------------------------------------------ -SIGParser::Flag_value_holderContext::Flag_value_holderContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Flag_value_holderContext::Flag_value_holderContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Value_idContext* SIGParser::Flag_value_holderContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Flag_value_holderContext::value_id() { + return getRuleContext(0); } -size_t SIGParser::Flag_value_holderContext::getRuleIndex() const { - return SIGParser::RuleFlag_value_holder; +size_t PrismParser::Flag_value_holderContext::getRuleIndex() const { + return PrismParser::RuleFlag_value_holder; } -void SIGParser::Flag_value_holderContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Flag_value_holderContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFlag_value_holder(this); } -void SIGParser::Flag_value_holderContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Flag_value_holderContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFlag_value_holder(this); } -std::any SIGParser::Flag_value_holderContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Flag_value_holderContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFlag_value_holder(this); else return visitor->visitChildren(this); } -SIGParser::Flag_value_holderContext* SIGParser::flag_value_holder() { +PrismParser::Flag_value_holderContext* PrismParser::flag_value_holder() { Flag_value_holderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 16, SIGParser::RuleFlag_value_holder); + enterRule(_localctx, 16, PrismParser::RuleFlag_value_holder); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1441,42 +1441,42 @@ SIGParser::Flag_value_holderContext* SIGParser::flag_value_holder() { //----------------- Raw_valueContext ------------------------------------------------------------------ -SIGParser::Raw_valueContext::Raw_valueContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Raw_valueContext::Raw_valueContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Raw_valueContext::RAWEXPR() { - return getToken(SIGParser::RAWEXPR, 0); +tree::TerminalNode* PrismParser::Raw_valueContext::RAWEXPR() { + return getToken(PrismParser::RAWEXPR, 0); } -size_t SIGParser::Raw_valueContext::getRuleIndex() const { - return SIGParser::RuleRaw_value; +size_t PrismParser::Raw_valueContext::getRuleIndex() const { + return PrismParser::RuleRaw_value; } -void SIGParser::Raw_valueContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Raw_valueContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRaw_value(this); } -void SIGParser::Raw_valueContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Raw_valueContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRaw_value(this); } -std::any SIGParser::Raw_valueContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Raw_valueContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRaw_value(this); else return visitor->visitChildren(this); } -SIGParser::Raw_valueContext* SIGParser::raw_value() { +PrismParser::Raw_valueContext* PrismParser::raw_value() { Raw_valueContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 18, SIGParser::RuleRaw_value); + enterRule(_localctx, 18, PrismParser::RuleRaw_value); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1488,7 +1488,7 @@ SIGParser::Raw_valueContext* SIGParser::raw_value() { try { enterOuterAlt(_localctx, 1); setState(255); - match(SIGParser::RAWEXPR); + match(PrismParser::RAWEXPR); } catch (RecognitionException &e) { @@ -1502,46 +1502,46 @@ SIGParser::Raw_valueContext* SIGParser::raw_value() { //----------------- Options_assignContext ------------------------------------------------------------------ -SIGParser::Options_assignContext::Options_assignContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Options_assignContext::Options_assignContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Options_assignContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Options_assignContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Bind_optionContext* SIGParser::Options_assignContext::bind_option() { - return getRuleContext(0); +PrismParser::Bind_optionContext* PrismParser::Options_assignContext::bind_option() { + return getRuleContext(0); } -size_t SIGParser::Options_assignContext::getRuleIndex() const { - return SIGParser::RuleOptions_assign; +size_t PrismParser::Options_assignContext::getRuleIndex() const { + return PrismParser::RuleOptions_assign; } -void SIGParser::Options_assignContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Options_assignContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOptions_assign(this); } -void SIGParser::Options_assignContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Options_assignContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOptions_assign(this); } -std::any SIGParser::Options_assignContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Options_assignContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOptions_assign(this); else return visitor->visitChildren(this); } -SIGParser::Options_assignContext* SIGParser::options_assign() { +PrismParser::Options_assignContext* PrismParser::options_assign() { Options_assignContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 20, SIGParser::RuleOptions_assign); + enterRule(_localctx, 20, PrismParser::RuleOptions_assign); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1553,7 +1553,7 @@ SIGParser::Options_assignContext* SIGParser::options_assign() { try { enterOuterAlt(_localctx, 1); setState(257); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(258); bind_option(); @@ -1569,46 +1569,46 @@ SIGParser::Options_assignContext* SIGParser::options_assign() { //----------------- OptionContext ------------------------------------------------------------------ -SIGParser::OptionContext::OptionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::OptionContext::OptionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Name_idContext* SIGParser::OptionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::OptionContext::name_id() { + return getRuleContext(0); } -SIGParser::Options_assignContext* SIGParser::OptionContext::options_assign() { - return getRuleContext(0); +PrismParser::Options_assignContext* PrismParser::OptionContext::options_assign() { + return getRuleContext(0); } -size_t SIGParser::OptionContext::getRuleIndex() const { - return SIGParser::RuleOption; +size_t PrismParser::OptionContext::getRuleIndex() const { + return PrismParser::RuleOption; } -void SIGParser::OptionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::OptionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOption(this); } -void SIGParser::OptionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::OptionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOption(this); } -std::any SIGParser::OptionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::OptionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOption(this); else return visitor->visitChildren(this); } -SIGParser::OptionContext* SIGParser::option() { +PrismParser::OptionContext* PrismParser::option() { OptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 22, SIGParser::RuleOption); + enterRule(_localctx, 22, PrismParser::RuleOption); size_t _la = 0; #if __cplusplus > 201703L @@ -1626,7 +1626,7 @@ SIGParser::OptionContext* SIGParser::option() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::ASSIGN) { + if (_la == PrismParser::ASSIGN) { setState(261); options_assign(); } @@ -1643,54 +1643,54 @@ SIGParser::OptionContext* SIGParser::option() { //----------------- Option_blockContext ------------------------------------------------------------------ -SIGParser::Option_blockContext::Option_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Option_blockContext::Option_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Option_blockContext::OSBRACE() { - return getToken(SIGParser::OSBRACE, 0); +tree::TerminalNode* PrismParser::Option_blockContext::OSBRACE() { + return getToken(PrismParser::OSBRACE, 0); } -std::vector SIGParser::Option_blockContext::option() { - return getRuleContexts(); +std::vector PrismParser::Option_blockContext::option() { + return getRuleContexts(); } -SIGParser::OptionContext* SIGParser::Option_blockContext::option(size_t i) { - return getRuleContext(i); +PrismParser::OptionContext* PrismParser::Option_blockContext::option(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* SIGParser::Option_blockContext::CSBRACE() { - return getToken(SIGParser::CSBRACE, 0); +tree::TerminalNode* PrismParser::Option_blockContext::CSBRACE() { + return getToken(PrismParser::CSBRACE, 0); } -size_t SIGParser::Option_blockContext::getRuleIndex() const { - return SIGParser::RuleOption_block; +size_t PrismParser::Option_blockContext::getRuleIndex() const { + return PrismParser::RuleOption_block; } -void SIGParser::Option_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Option_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOption_block(this); } -void SIGParser::Option_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Option_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOption_block(this); } -std::any SIGParser::Option_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Option_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOption_block(this); else return visitor->visitChildren(this); } -SIGParser::Option_blockContext* SIGParser::option_block() { +PrismParser::Option_blockContext* PrismParser::option_block() { Option_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 24, SIGParser::RuleOption_block); + enterRule(_localctx, 24, PrismParser::RuleOption_block); size_t _la = 0; #if __cplusplus > 201703L @@ -1703,15 +1703,15 @@ SIGParser::Option_blockContext* SIGParser::option_block() { try { enterOuterAlt(_localctx, 1); setState(264); - match(SIGParser::OSBRACE); + match(PrismParser::OSBRACE); setState(265); option(); setState(270); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::T__2) { + while (_la == PrismParser::T__2) { setState(266); - match(SIGParser::T__2); + match(PrismParser::T__2); setState(267); option(); setState(272); @@ -1719,7 +1719,7 @@ SIGParser::Option_blockContext* SIGParser::option_block() { _la = _input->LA(1); } setState(273); - match(SIGParser::CSBRACE); + match(PrismParser::CSBRACE); } catch (RecognitionException &e) { @@ -1733,42 +1733,42 @@ SIGParser::Option_blockContext* SIGParser::option_block() { //----------------- Array_count_idContext ------------------------------------------------------------------ -SIGParser::Array_count_idContext::Array_count_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Array_count_idContext::Array_count_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Array_count_idContext::INT_SCALAR() { - return getToken(SIGParser::INT_SCALAR, 0); +tree::TerminalNode* PrismParser::Array_count_idContext::INT_SCALAR() { + return getToken(PrismParser::INT_SCALAR, 0); } -size_t SIGParser::Array_count_idContext::getRuleIndex() const { - return SIGParser::RuleArray_count_id; +size_t PrismParser::Array_count_idContext::getRuleIndex() const { + return PrismParser::RuleArray_count_id; } -void SIGParser::Array_count_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Array_count_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArray_count_id(this); } -void SIGParser::Array_count_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Array_count_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArray_count_id(this); } -std::any SIGParser::Array_count_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Array_count_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitArray_count_id(this); else return visitor->visitChildren(this); } -SIGParser::Array_count_idContext* SIGParser::array_count_id() { +PrismParser::Array_count_idContext* PrismParser::array_count_id() { Array_count_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 26, SIGParser::RuleArray_count_id); + enterRule(_localctx, 26, PrismParser::RuleArray_count_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1780,7 +1780,7 @@ SIGParser::Array_count_idContext* SIGParser::array_count_id() { try { enterOuterAlt(_localctx, 1); setState(275); - match(SIGParser::INT_SCALAR); + match(PrismParser::INT_SCALAR); } catch (RecognitionException &e) { @@ -1794,50 +1794,50 @@ SIGParser::Array_count_idContext* SIGParser::array_count_id() { //----------------- ArrayContext ------------------------------------------------------------------ -SIGParser::ArrayContext::ArrayContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::ArrayContext::ArrayContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::ArrayContext::OSBRACE() { - return getToken(SIGParser::OSBRACE, 0); +tree::TerminalNode* PrismParser::ArrayContext::OSBRACE() { + return getToken(PrismParser::OSBRACE, 0); } -tree::TerminalNode* SIGParser::ArrayContext::CSBRACE() { - return getToken(SIGParser::CSBRACE, 0); +tree::TerminalNode* PrismParser::ArrayContext::CSBRACE() { + return getToken(PrismParser::CSBRACE, 0); } -SIGParser::Array_count_idContext* SIGParser::ArrayContext::array_count_id() { - return getRuleContext(0); +PrismParser::Array_count_idContext* PrismParser::ArrayContext::array_count_id() { + return getRuleContext(0); } -size_t SIGParser::ArrayContext::getRuleIndex() const { - return SIGParser::RuleArray; +size_t PrismParser::ArrayContext::getRuleIndex() const { + return PrismParser::RuleArray; } -void SIGParser::ArrayContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::ArrayContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArray(this); } -void SIGParser::ArrayContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::ArrayContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArray(this); } -std::any SIGParser::ArrayContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::ArrayContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitArray(this); else return visitor->visitChildren(this); } -SIGParser::ArrayContext* SIGParser::array() { +PrismParser::ArrayContext* PrismParser::array() { ArrayContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 28, SIGParser::RuleArray); + enterRule(_localctx, 28, PrismParser::RuleArray); size_t _la = 0; #if __cplusplus > 201703L @@ -1850,17 +1850,17 @@ SIGParser::ArrayContext* SIGParser::array() { try { enterOuterAlt(_localctx, 1); setState(277); - match(SIGParser::OSBRACE); + match(PrismParser::OSBRACE); setState(279); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::INT_SCALAR) { + if (_la == PrismParser::INT_SCALAR) { setState(278); array_count_id(); } setState(281); - match(SIGParser::CSBRACE); + match(PrismParser::CSBRACE); } catch (RecognitionException &e) { @@ -1874,70 +1874,70 @@ SIGParser::ArrayContext* SIGParser::array() { //----------------- Value_declarationContext ------------------------------------------------------------------ -SIGParser::Value_declarationContext::Value_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Value_declarationContext::Value_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Type_idContext* SIGParser::Value_declarationContext::type_id() { - return getRuleContext(0); +PrismParser::Type_idContext* PrismParser::Value_declarationContext::type_id() { + return getRuleContext(0); } -SIGParser::Name_idContext* SIGParser::Value_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Value_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Value_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Value_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Value_declarationContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Value_declarationContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Value_declarationContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Value_declarationContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::ArrayContext* SIGParser::Value_declarationContext::array() { - return getRuleContext(0); +PrismParser::ArrayContext* PrismParser::Value_declarationContext::array() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Value_declarationContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Value_declarationContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Value_idContext* SIGParser::Value_declarationContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Value_declarationContext::value_id() { + return getRuleContext(0); } -size_t SIGParser::Value_declarationContext::getRuleIndex() const { - return SIGParser::RuleValue_declaration; +size_t PrismParser::Value_declarationContext::getRuleIndex() const { + return PrismParser::RuleValue_declaration; } -void SIGParser::Value_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Value_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterValue_declaration(this); } -void SIGParser::Value_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Value_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitValue_declaration(this); } -std::any SIGParser::Value_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Value_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValue_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Value_declarationContext* SIGParser::value_declaration() { +PrismParser::Value_declarationContext* PrismParser::value_declaration() { Value_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 30, SIGParser::RuleValue_declaration); + enterRule(_localctx, 30, PrismParser::RuleValue_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -1970,7 +1970,7 @@ SIGParser::Value_declarationContext* SIGParser::value_declaration() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::OSBRACE) { + if (_la == PrismParser::OSBRACE) { setState(291); array(); } @@ -1978,14 +1978,14 @@ SIGParser::Value_declarationContext* SIGParser::value_declaration() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::ASSIGN) { + if (_la == PrismParser::ASSIGN) { setState(294); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(295); value_id(); } setState(298); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -1999,50 +1999,50 @@ SIGParser::Value_declarationContext* SIGParser::value_declaration() { //----------------- Slot_declarationContext ------------------------------------------------------------------ -SIGParser::Slot_declarationContext::Slot_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Slot_declarationContext::Slot_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Slot_declarationContext::SLOT() { - return getToken(SIGParser::SLOT, 0); +tree::TerminalNode* PrismParser::Slot_declarationContext::SLOT() { + return getToken(PrismParser::SLOT, 0); } -SIGParser::Name_idContext* SIGParser::Slot_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Slot_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Slot_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Slot_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Slot_declarationContext::getRuleIndex() const { - return SIGParser::RuleSlot_declaration; +size_t PrismParser::Slot_declarationContext::getRuleIndex() const { + return PrismParser::RuleSlot_declaration; } -void SIGParser::Slot_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Slot_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSlot_declaration(this); } -void SIGParser::Slot_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Slot_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSlot_declaration(this); } -std::any SIGParser::Slot_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Slot_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitSlot_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Slot_declarationContext* SIGParser::slot_declaration() { +PrismParser::Slot_declarationContext* PrismParser::slot_declaration() { Slot_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 32, SIGParser::RuleSlot_declaration); + enterRule(_localctx, 32, PrismParser::RuleSlot_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2054,11 +2054,11 @@ SIGParser::Slot_declarationContext* SIGParser::slot_declaration() { try { enterOuterAlt(_localctx, 1); setState(300); - match(SIGParser::SLOT); + match(PrismParser::SLOT); setState(301); name_id(); setState(302); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -2072,54 +2072,54 @@ SIGParser::Slot_declarationContext* SIGParser::slot_declaration() { //----------------- Sampler_declarationContext ------------------------------------------------------------------ -SIGParser::Sampler_declarationContext::Sampler_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Sampler_declarationContext::Sampler_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Name_idContext* SIGParser::Sampler_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Sampler_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Sampler_declarationContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Sampler_declarationContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Value_idContext* SIGParser::Sampler_declarationContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Sampler_declarationContext::value_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Sampler_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Sampler_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Sampler_declarationContext::getRuleIndex() const { - return SIGParser::RuleSampler_declaration; +size_t PrismParser::Sampler_declarationContext::getRuleIndex() const { + return PrismParser::RuleSampler_declaration; } -void SIGParser::Sampler_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Sampler_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterSampler_declaration(this); } -void SIGParser::Sampler_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Sampler_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitSampler_declaration(this); } -std::any SIGParser::Sampler_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Sampler_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitSampler_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Sampler_declarationContext* SIGParser::sampler_declaration() { +PrismParser::Sampler_declarationContext* PrismParser::sampler_declaration() { Sampler_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 34, SIGParser::RuleSampler_declaration); + enterRule(_localctx, 34, PrismParser::RuleSampler_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2131,15 +2131,15 @@ SIGParser::Sampler_declarationContext* SIGParser::sampler_declaration() { try { enterOuterAlt(_localctx, 1); setState(304); - match(SIGParser::T__3); + match(PrismParser::T__3); setState(305); name_id(); setState(306); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(307); value_id(); setState(308); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -2153,62 +2153,62 @@ SIGParser::Sampler_declarationContext* SIGParser::sampler_declaration() { //----------------- Define_declarationContext ------------------------------------------------------------------ -SIGParser::Define_declarationContext::Define_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Define_declarationContext::Define_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Name_idContext* SIGParser::Define_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Define_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Define_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Define_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Define_declarationContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Define_declarationContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Define_declarationContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Define_declarationContext::option_block(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* SIGParser::Define_declarationContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Define_declarationContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Array_value_idsContext* SIGParser::Define_declarationContext::array_value_ids() { - return getRuleContext(0); +PrismParser::Array_value_idsContext* PrismParser::Define_declarationContext::array_value_ids() { + return getRuleContext(0); } -size_t SIGParser::Define_declarationContext::getRuleIndex() const { - return SIGParser::RuleDefine_declaration; +size_t PrismParser::Define_declarationContext::getRuleIndex() const { + return PrismParser::RuleDefine_declaration; } -void SIGParser::Define_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Define_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterDefine_declaration(this); } -void SIGParser::Define_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Define_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitDefine_declaration(this); } -std::any SIGParser::Define_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Define_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitDefine_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Define_declarationContext* SIGParser::define_declaration() { +PrismParser::Define_declarationContext* PrismParser::define_declaration() { Define_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 36, SIGParser::RuleDefine_declaration); + enterRule(_localctx, 36, PrismParser::RuleDefine_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -2234,21 +2234,21 @@ SIGParser::Define_declarationContext* SIGParser::define_declaration() { alt = getInterpreter()->adaptivePredict(_input, 13, _ctx); } setState(316); - match(SIGParser::T__4); + match(PrismParser::T__4); setState(317); name_id(); setState(320); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::ASSIGN) { + if (_la == PrismParser::ASSIGN) { setState(318); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(319); array_value_ids(); } setState(322); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -2262,58 +2262,58 @@ SIGParser::Define_declarationContext* SIGParser::define_declaration() { //----------------- Rtv_formats_declarationContext ------------------------------------------------------------------ -SIGParser::Rtv_formats_declarationContext::Rtv_formats_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtv_formats_declarationContext::Rtv_formats_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Rtv_formats_declarationContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Rtv_formats_declarationContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Array_value_idsContext* SIGParser::Rtv_formats_declarationContext::array_value_ids() { - return getRuleContext(0); +PrismParser::Array_value_idsContext* PrismParser::Rtv_formats_declarationContext::array_value_ids() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtv_formats_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Rtv_formats_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Rtv_formats_declarationContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Rtv_formats_declarationContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Rtv_formats_declarationContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Rtv_formats_declarationContext::option_block(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Rtv_formats_declarationContext::getRuleIndex() const { - return SIGParser::RuleRtv_formats_declaration; +size_t PrismParser::Rtv_formats_declarationContext::getRuleIndex() const { + return PrismParser::RuleRtv_formats_declaration; } -void SIGParser::Rtv_formats_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtv_formats_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtv_formats_declaration(this); } -void SIGParser::Rtv_formats_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtv_formats_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtv_formats_declaration(this); } -std::any SIGParser::Rtv_formats_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtv_formats_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtv_formats_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Rtv_formats_declarationContext* SIGParser::rtv_formats_declaration() { +PrismParser::Rtv_formats_declarationContext* PrismParser::rtv_formats_declaration() { Rtv_formats_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 38, SIGParser::RuleRtv_formats_declaration); + enterRule(_localctx, 38, PrismParser::RuleRtv_formats_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2338,13 +2338,13 @@ SIGParser::Rtv_formats_declarationContext* SIGParser::rtv_formats_declaration() alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); } setState(330); - match(SIGParser::T__5); + match(PrismParser::T__5); setState(331); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(332); array_value_ids(); setState(333); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -2358,58 +2358,58 @@ SIGParser::Rtv_formats_declarationContext* SIGParser::rtv_formats_declaration() //----------------- Blends_declarationContext ------------------------------------------------------------------ -SIGParser::Blends_declarationContext::Blends_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Blends_declarationContext::Blends_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Blends_declarationContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Blends_declarationContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Array_value_idsContext* SIGParser::Blends_declarationContext::array_value_ids() { - return getRuleContext(0); +PrismParser::Array_value_idsContext* PrismParser::Blends_declarationContext::array_value_ids() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Blends_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Blends_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Blends_declarationContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Blends_declarationContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Blends_declarationContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Blends_declarationContext::option_block(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Blends_declarationContext::getRuleIndex() const { - return SIGParser::RuleBlends_declaration; +size_t PrismParser::Blends_declarationContext::getRuleIndex() const { + return PrismParser::RuleBlends_declaration; } -void SIGParser::Blends_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Blends_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterBlends_declaration(this); } -void SIGParser::Blends_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Blends_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitBlends_declaration(this); } -std::any SIGParser::Blends_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Blends_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBlends_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Blends_declarationContext* SIGParser::blends_declaration() { +PrismParser::Blends_declarationContext* PrismParser::blends_declaration() { Blends_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 40, SIGParser::RuleBlends_declaration); + enterRule(_localctx, 40, PrismParser::RuleBlends_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2434,13 +2434,13 @@ SIGParser::Blends_declarationContext* SIGParser::blends_declaration() { alt = getInterpreter()->adaptivePredict(_input, 16, _ctx); } setState(341); - match(SIGParser::T__6); + match(PrismParser::T__6); setState(342); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(343); array_value_ids(); setState(344); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -2454,42 +2454,42 @@ SIGParser::Blends_declarationContext* SIGParser::blends_declaration() { //----------------- PointerContext ------------------------------------------------------------------ -SIGParser::PointerContext::PointerContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::PointerContext::PointerContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::PointerContext::POINTER() { - return getToken(SIGParser::POINTER, 0); +tree::TerminalNode* PrismParser::PointerContext::POINTER() { + return getToken(PrismParser::POINTER, 0); } -size_t SIGParser::PointerContext::getRuleIndex() const { - return SIGParser::RulePointer; +size_t PrismParser::PointerContext::getRuleIndex() const { + return PrismParser::RulePointer; } -void SIGParser::PointerContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::PointerContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPointer(this); } -void SIGParser::PointerContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::PointerContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPointer(this); } -std::any SIGParser::PointerContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::PointerContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPointer(this); else return visitor->visitChildren(this); } -SIGParser::PointerContext* SIGParser::pointer() { +PrismParser::PointerContext* PrismParser::pointer() { PointerContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 42, SIGParser::RulePointer); + enterRule(_localctx, 42, PrismParser::RulePointer); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2501,7 +2501,7 @@ SIGParser::PointerContext* SIGParser::pointer() { try { enterOuterAlt(_localctx, 1); setState(346); - match(SIGParser::POINTER); + match(PrismParser::POINTER); } catch (RecognitionException &e) { @@ -2515,62 +2515,62 @@ SIGParser::PointerContext* SIGParser::pointer() { //----------------- Pso_paramContext ------------------------------------------------------------------ -SIGParser::Pso_paramContext::Pso_paramContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Pso_paramContext::Pso_paramContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Pso_param_idContext* SIGParser::Pso_paramContext::pso_param_id() { - return getRuleContext(0); +PrismParser::Pso_param_idContext* PrismParser::Pso_paramContext::pso_param_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pso_paramContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Pso_paramContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Value_idContext* SIGParser::Pso_paramContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Pso_paramContext::value_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pso_paramContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Pso_paramContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Pso_paramContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Pso_paramContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Pso_paramContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Pso_paramContext::option_block(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Pso_paramContext::getRuleIndex() const { - return SIGParser::RulePso_param; +size_t PrismParser::Pso_paramContext::getRuleIndex() const { + return PrismParser::RulePso_param; } -void SIGParser::Pso_paramContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pso_paramContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPso_param(this); } -void SIGParser::Pso_paramContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pso_paramContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPso_param(this); } -std::any SIGParser::Pso_paramContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Pso_paramContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPso_param(this); else return visitor->visitChildren(this); } -SIGParser::Pso_paramContext* SIGParser::pso_param() { +PrismParser::Pso_paramContext* PrismParser::pso_param() { Pso_paramContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 44, SIGParser::RulePso_param); + enterRule(_localctx, 44, PrismParser::RulePso_param); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2597,11 +2597,11 @@ SIGParser::Pso_paramContext* SIGParser::pso_param() { setState(354); pso_param_id(); setState(355); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(356); value_id(); setState(357); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -2615,42 +2615,42 @@ SIGParser::Pso_paramContext* SIGParser::pso_param() { //----------------- Class_no_templateContext ------------------------------------------------------------------ -SIGParser::Class_no_templateContext::Class_no_templateContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Class_no_templateContext::Class_no_templateContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Class_no_templateContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Class_no_templateContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Class_no_templateContext::getRuleIndex() const { - return SIGParser::RuleClass_no_template; +size_t PrismParser::Class_no_templateContext::getRuleIndex() const { + return PrismParser::RuleClass_no_template; } -void SIGParser::Class_no_templateContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Class_no_templateContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterClass_no_template(this); } -void SIGParser::Class_no_templateContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Class_no_templateContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitClass_no_template(this); } -std::any SIGParser::Class_no_templateContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Class_no_templateContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitClass_no_template(this); else return visitor->visitChildren(this); } -SIGParser::Class_no_templateContext* SIGParser::class_no_template() { +PrismParser::Class_no_templateContext* PrismParser::class_no_template() { Class_no_templateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 46, SIGParser::RuleClass_no_template); + enterRule(_localctx, 46, PrismParser::RuleClass_no_template); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2662,7 +2662,7 @@ SIGParser::Class_no_templateContext* SIGParser::class_no_template() { try { enterOuterAlt(_localctx, 1); setState(359); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -2676,62 +2676,62 @@ SIGParser::Class_no_templateContext* SIGParser::class_no_template() { //----------------- Type_with_templateContext ------------------------------------------------------------------ -SIGParser::Type_with_templateContext::Type_with_templateContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Type_with_templateContext::Type_with_templateContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Class_no_templateContext* SIGParser::Type_with_templateContext::class_no_template() { - return getRuleContext(0); +PrismParser::Class_no_templateContext* PrismParser::Type_with_templateContext::class_no_template() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Type_with_templateContext::LT() { - return getToken(SIGParser::LT, 0); +tree::TerminalNode* PrismParser::Type_with_templateContext::LT() { + return getToken(PrismParser::LT, 0); } -tree::TerminalNode* SIGParser::Type_with_templateContext::GT() { - return getToken(SIGParser::GT, 0); +tree::TerminalNode* PrismParser::Type_with_templateContext::GT() { + return getToken(PrismParser::GT, 0); } -SIGParser::PointerContext* SIGParser::Type_with_templateContext::pointer() { - return getRuleContext(0); +PrismParser::PointerContext* PrismParser::Type_with_templateContext::pointer() { + return getRuleContext(0); } -std::vector SIGParser::Type_with_templateContext::template_id() { - return getRuleContexts(); +std::vector PrismParser::Type_with_templateContext::template_id() { + return getRuleContexts(); } -SIGParser::Template_idContext* SIGParser::Type_with_templateContext::template_id(size_t i) { - return getRuleContext(i); +PrismParser::Template_idContext* PrismParser::Type_with_templateContext::template_id(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Type_with_templateContext::getRuleIndex() const { - return SIGParser::RuleType_with_template; +size_t PrismParser::Type_with_templateContext::getRuleIndex() const { + return PrismParser::RuleType_with_template; } -void SIGParser::Type_with_templateContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Type_with_templateContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterType_with_template(this); } -void SIGParser::Type_with_templateContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Type_with_templateContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitType_with_template(this); } -std::any SIGParser::Type_with_templateContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Type_with_templateContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitType_with_template(this); else return visitor->visitChildren(this); } -SIGParser::Type_with_templateContext* SIGParser::type_with_template() { +PrismParser::Type_with_templateContext* PrismParser::type_with_template() { Type_with_templateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 48, SIGParser::RuleType_with_template); + enterRule(_localctx, 48, PrismParser::RuleType_with_template); size_t _la = 0; #if __cplusplus > 201703L @@ -2749,13 +2749,13 @@ SIGParser::Type_with_templateContext* SIGParser::type_with_template() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::LT) { + if (_la == PrismParser::LT) { setState(362); - match(SIGParser::LT); + match(PrismParser::LT); setState(366); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::ID) { + while (_la == PrismParser::ID) { setState(363); template_id(); setState(368); @@ -2763,13 +2763,13 @@ SIGParser::Type_with_templateContext* SIGParser::type_with_template() { _la = _input->LA(1); } setState(369); - match(SIGParser::GT); + match(PrismParser::GT); } setState(373); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::POINTER) { + if (_la == PrismParser::POINTER) { setState(372); pointer(); } @@ -2786,42 +2786,42 @@ SIGParser::Type_with_templateContext* SIGParser::type_with_template() { //----------------- Inherit_idContext ------------------------------------------------------------------ -SIGParser::Inherit_idContext::Inherit_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Inherit_idContext::Inherit_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Inherit_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Inherit_idContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Inherit_idContext::getRuleIndex() const { - return SIGParser::RuleInherit_id; +size_t PrismParser::Inherit_idContext::getRuleIndex() const { + return PrismParser::RuleInherit_id; } -void SIGParser::Inherit_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Inherit_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterInherit_id(this); } -void SIGParser::Inherit_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Inherit_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitInherit_id(this); } -std::any SIGParser::Inherit_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Inherit_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitInherit_id(this); else return visitor->visitChildren(this); } -SIGParser::Inherit_idContext* SIGParser::inherit_id() { +PrismParser::Inherit_idContext* PrismParser::inherit_id() { Inherit_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 50, SIGParser::RuleInherit_id); + enterRule(_localctx, 50, PrismParser::RuleInherit_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2833,7 +2833,7 @@ SIGParser::Inherit_idContext* SIGParser::inherit_id() { try { enterOuterAlt(_localctx, 1); setState(375); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -2847,42 +2847,42 @@ SIGParser::Inherit_idContext* SIGParser::inherit_id() { //----------------- Name_idContext ------------------------------------------------------------------ -SIGParser::Name_idContext::Name_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Name_idContext::Name_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Name_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Name_idContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Name_idContext::getRuleIndex() const { - return SIGParser::RuleName_id; +size_t PrismParser::Name_idContext::getRuleIndex() const { + return PrismParser::RuleName_id; } -void SIGParser::Name_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Name_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterName_id(this); } -void SIGParser::Name_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Name_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitName_id(this); } -std::any SIGParser::Name_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Name_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitName_id(this); else return visitor->visitChildren(this); } -SIGParser::Name_idContext* SIGParser::name_id() { +PrismParser::Name_idContext* PrismParser::name_id() { Name_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, SIGParser::RuleName_id); + enterRule(_localctx, 52, PrismParser::RuleName_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2894,7 +2894,7 @@ SIGParser::Name_idContext* SIGParser::name_id() { try { enterOuterAlt(_localctx, 1); setState(377); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -2908,42 +2908,42 @@ SIGParser::Name_idContext* SIGParser::name_id() { //----------------- Option_idContext ------------------------------------------------------------------ -SIGParser::Option_idContext::Option_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Option_idContext::Option_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Option_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Option_idContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Option_idContext::getRuleIndex() const { - return SIGParser::RuleOption_id; +size_t PrismParser::Option_idContext::getRuleIndex() const { + return PrismParser::RuleOption_id; } -void SIGParser::Option_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Option_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOption_id(this); } -void SIGParser::Option_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Option_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOption_id(this); } -std::any SIGParser::Option_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Option_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOption_id(this); else return visitor->visitChildren(this); } -SIGParser::Option_idContext* SIGParser::option_id() { +PrismParser::Option_idContext* PrismParser::option_id() { Option_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, SIGParser::RuleOption_id); + enterRule(_localctx, 54, PrismParser::RuleOption_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2955,7 +2955,7 @@ SIGParser::Option_idContext* SIGParser::option_id() { try { enterOuterAlt(_localctx, 1); setState(379); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -2969,42 +2969,42 @@ SIGParser::Option_idContext* SIGParser::option_id() { //----------------- Owner_idContext ------------------------------------------------------------------ -SIGParser::Owner_idContext::Owner_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Owner_idContext::Owner_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Owner_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Owner_idContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Owner_idContext::getRuleIndex() const { - return SIGParser::RuleOwner_id; +size_t PrismParser::Owner_idContext::getRuleIndex() const { + return PrismParser::RuleOwner_id; } -void SIGParser::Owner_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Owner_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterOwner_id(this); } -void SIGParser::Owner_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Owner_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitOwner_id(this); } -std::any SIGParser::Owner_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Owner_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitOwner_id(this); else return visitor->visitChildren(this); } -SIGParser::Owner_idContext* SIGParser::owner_id() { +PrismParser::Owner_idContext* PrismParser::owner_id() { Owner_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, SIGParser::RuleOwner_id); + enterRule(_localctx, 56, PrismParser::RuleOwner_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3016,7 +3016,7 @@ SIGParser::Owner_idContext* SIGParser::owner_id() { try { enterOuterAlt(_localctx, 1); setState(381); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -3030,42 +3030,42 @@ SIGParser::Owner_idContext* SIGParser::owner_id() { //----------------- Template_idContext ------------------------------------------------------------------ -SIGParser::Template_idContext::Template_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Template_idContext::Template_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Template_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Template_idContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Template_idContext::getRuleIndex() const { - return SIGParser::RuleTemplate_id; +size_t PrismParser::Template_idContext::getRuleIndex() const { + return PrismParser::RuleTemplate_id; } -void SIGParser::Template_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Template_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTemplate_id(this); } -void SIGParser::Template_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Template_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTemplate_id(this); } -std::any SIGParser::Template_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Template_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTemplate_id(this); else return visitor->visitChildren(this); } -SIGParser::Template_idContext* SIGParser::template_id() { +PrismParser::Template_idContext* PrismParser::template_id() { Template_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, SIGParser::RuleTemplate_id); + enterRule(_localctx, 58, PrismParser::RuleTemplate_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3077,7 +3077,7 @@ SIGParser::Template_idContext* SIGParser::template_id() { try { enterOuterAlt(_localctx, 1); setState(383); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -3091,58 +3091,58 @@ SIGParser::Template_idContext* SIGParser::template_id() { //----------------- Function_idContext ------------------------------------------------------------------ -SIGParser::Function_idContext::Function_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Function_idContext::Function_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Function_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Function_idContext::ID() { + return getToken(PrismParser::ID, 0); } -tree::TerminalNode* SIGParser::Function_idContext::OPAR() { - return getToken(SIGParser::OPAR, 0); +tree::TerminalNode* PrismParser::Function_idContext::OPAR() { + return getToken(PrismParser::OPAR, 0); } -tree::TerminalNode* SIGParser::Function_idContext::CPAR() { - return getToken(SIGParser::CPAR, 0); +tree::TerminalNode* PrismParser::Function_idContext::CPAR() { + return getToken(PrismParser::CPAR, 0); } -std::vector SIGParser::Function_idContext::value_id_ignore() { - return getRuleContexts(); +std::vector PrismParser::Function_idContext::value_id_ignore() { + return getRuleContexts(); } -SIGParser::Value_id_ignoreContext* SIGParser::Function_idContext::value_id_ignore(size_t i) { - return getRuleContext(i); +PrismParser::Value_id_ignoreContext* PrismParser::Function_idContext::value_id_ignore(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Function_idContext::getRuleIndex() const { - return SIGParser::RuleFunction_id; +size_t PrismParser::Function_idContext::getRuleIndex() const { + return PrismParser::RuleFunction_id; } -void SIGParser::Function_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunction_id(this); } -void SIGParser::Function_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunction_id(this); } -std::any SIGParser::Function_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Function_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFunction_id(this); else return visitor->visitChildren(this); } -SIGParser::Function_idContext* SIGParser::function_id() { +PrismParser::Function_idContext* PrismParser::function_id() { Function_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, SIGParser::RuleFunction_id); + enterRule(_localctx, 60, PrismParser::RuleFunction_id); size_t _la = 0; #if __cplusplus > 201703L @@ -3155,9 +3155,9 @@ SIGParser::Function_idContext* SIGParser::function_id() { try { enterOuterAlt(_localctx, 1); setState(385); - match(SIGParser::ID); + match(PrismParser::ID); setState(386); - match(SIGParser::OPAR); + match(PrismParser::OPAR); setState(388); _errHandler->sync(this); @@ -3170,9 +3170,9 @@ SIGParser::Function_idContext* SIGParser::function_id() { setState(394); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::T__2) { + while (_la == PrismParser::T__2) { setState(390); - match(SIGParser::T__2); + match(PrismParser::T__2); setState(391); value_id_ignore(); setState(396); @@ -3180,7 +3180,7 @@ SIGParser::Function_idContext* SIGParser::function_id() { _la = _input->LA(1); } setState(397); - match(SIGParser::CPAR); + match(PrismParser::CPAR); } catch (RecognitionException &e) { @@ -3194,66 +3194,66 @@ SIGParser::Function_idContext* SIGParser::function_id() { //----------------- Value_idContext ------------------------------------------------------------------ -SIGParser::Value_idContext::Value_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Value_idContext::Value_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Shader_typeContext* SIGParser::Value_idContext::shader_type() { - return getRuleContext(0); +PrismParser::Shader_typeContext* PrismParser::Value_idContext::shader_type() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Value_idContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Value_idContext::ID() { + return getToken(PrismParser::ID, 0); } -tree::TerminalNode* SIGParser::Value_idContext::INT_SCALAR() { - return getToken(SIGParser::INT_SCALAR, 0); +tree::TerminalNode* PrismParser::Value_idContext::INT_SCALAR() { + return getToken(PrismParser::INT_SCALAR, 0); } -tree::TerminalNode* SIGParser::Value_idContext::FLOAT_SCALAR() { - return getToken(SIGParser::FLOAT_SCALAR, 0); +tree::TerminalNode* PrismParser::Value_idContext::FLOAT_SCALAR() { + return getToken(PrismParser::FLOAT_SCALAR, 0); } -SIGParser::Bool_typeContext* SIGParser::Value_idContext::bool_type() { - return getRuleContext(0); +PrismParser::Bool_typeContext* PrismParser::Value_idContext::bool_type() { + return getRuleContext(0); } -SIGParser::Function_idContext* SIGParser::Value_idContext::function_id() { - return getRuleContext(0); +PrismParser::Function_idContext* PrismParser::Value_idContext::function_id() { + return getRuleContext(0); } -SIGParser::Array_value_idsContext* SIGParser::Value_idContext::array_value_ids() { - return getRuleContext(0); +PrismParser::Array_value_idsContext* PrismParser::Value_idContext::array_value_ids() { + return getRuleContext(0); } -size_t SIGParser::Value_idContext::getRuleIndex() const { - return SIGParser::RuleValue_id; +size_t PrismParser::Value_idContext::getRuleIndex() const { + return PrismParser::RuleValue_id; } -void SIGParser::Value_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Value_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterValue_id(this); } -void SIGParser::Value_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Value_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitValue_id(this); } -std::any SIGParser::Value_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Value_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValue_id(this); else return visitor->visitChildren(this); } -SIGParser::Value_idContext* SIGParser::value_id() { +PrismParser::Value_idContext* PrismParser::value_id() { Value_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, SIGParser::RuleValue_id); + enterRule(_localctx, 62, PrismParser::RuleValue_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3276,21 +3276,21 @@ SIGParser::Value_idContext* SIGParser::value_id() { case 2: { enterOuterAlt(_localctx, 2); setState(400); - match(SIGParser::ID); + match(PrismParser::ID); break; } case 3: { enterOuterAlt(_localctx, 3); setState(401); - match(SIGParser::INT_SCALAR); + match(PrismParser::INT_SCALAR); break; } case 4: { enterOuterAlt(_localctx, 4); setState(402); - match(SIGParser::FLOAT_SCALAR); + match(PrismParser::FLOAT_SCALAR); break; } @@ -3331,54 +3331,54 @@ SIGParser::Value_idContext* SIGParser::value_id() { //----------------- Value_id_ignoreContext ------------------------------------------------------------------ -SIGParser::Value_id_ignoreContext::Value_id_ignoreContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Value_id_ignoreContext::Value_id_ignoreContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Value_id_ignoreContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Value_id_ignoreContext::ID() { + return getToken(PrismParser::ID, 0); } -tree::TerminalNode* SIGParser::Value_id_ignoreContext::INT_SCALAR() { - return getToken(SIGParser::INT_SCALAR, 0); +tree::TerminalNode* PrismParser::Value_id_ignoreContext::INT_SCALAR() { + return getToken(PrismParser::INT_SCALAR, 0); } -tree::TerminalNode* SIGParser::Value_id_ignoreContext::FLOAT_SCALAR() { - return getToken(SIGParser::FLOAT_SCALAR, 0); +tree::TerminalNode* PrismParser::Value_id_ignoreContext::FLOAT_SCALAR() { + return getToken(PrismParser::FLOAT_SCALAR, 0); } -SIGParser::Bool_typeContext* SIGParser::Value_id_ignoreContext::bool_type() { - return getRuleContext(0); +PrismParser::Bool_typeContext* PrismParser::Value_id_ignoreContext::bool_type() { + return getRuleContext(0); } -size_t SIGParser::Value_id_ignoreContext::getRuleIndex() const { - return SIGParser::RuleValue_id_ignore; +size_t PrismParser::Value_id_ignoreContext::getRuleIndex() const { + return PrismParser::RuleValue_id_ignore; } -void SIGParser::Value_id_ignoreContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Value_id_ignoreContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterValue_id_ignore(this); } -void SIGParser::Value_id_ignoreContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Value_id_ignoreContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitValue_id_ignore(this); } -std::any SIGParser::Value_id_ignoreContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Value_id_ignoreContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitValue_id_ignore(this); else return visitor->visitChildren(this); } -SIGParser::Value_id_ignoreContext* SIGParser::value_id_ignore() { +PrismParser::Value_id_ignoreContext* PrismParser::value_id_ignore() { Value_id_ignoreContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, SIGParser::RuleValue_id_ignore); + enterRule(_localctx, 64, PrismParser::RuleValue_id_ignore); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3391,29 +3391,29 @@ SIGParser::Value_id_ignoreContext* SIGParser::value_id_ignore() { setState(412); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::ID: { + case PrismParser::ID: { enterOuterAlt(_localctx, 1); setState(408); - match(SIGParser::ID); + match(PrismParser::ID); break; } - case SIGParser::INT_SCALAR: { + case PrismParser::INT_SCALAR: { enterOuterAlt(_localctx, 2); setState(409); - match(SIGParser::INT_SCALAR); + match(PrismParser::INT_SCALAR); break; } - case SIGParser::FLOAT_SCALAR: { + case PrismParser::FLOAT_SCALAR: { enterOuterAlt(_localctx, 3); setState(410); - match(SIGParser::FLOAT_SCALAR); + match(PrismParser::FLOAT_SCALAR); break; } - case SIGParser::TRUE: - case SIGParser::FALSE: { + case PrismParser::TRUE: + case PrismParser::FALSE: { enterOuterAlt(_localctx, 4); setState(411); bool_type(); @@ -3436,42 +3436,42 @@ SIGParser::Value_id_ignoreContext* SIGParser::value_id_ignore() { //----------------- Type_idContext ------------------------------------------------------------------ -SIGParser::Type_idContext::Type_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Type_idContext::Type_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Type_with_templateContext* SIGParser::Type_idContext::type_with_template() { - return getRuleContext(0); +PrismParser::Type_with_templateContext* PrismParser::Type_idContext::type_with_template() { + return getRuleContext(0); } -size_t SIGParser::Type_idContext::getRuleIndex() const { - return SIGParser::RuleType_id; +size_t PrismParser::Type_idContext::getRuleIndex() const { + return PrismParser::RuleType_id; } -void SIGParser::Type_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Type_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterType_id(this); } -void SIGParser::Type_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Type_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitType_id(this); } -std::any SIGParser::Type_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Type_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitType_id(this); else return visitor->visitChildren(this); } -SIGParser::Type_idContext* SIGParser::type_id() { +PrismParser::Type_idContext* PrismParser::type_id() { Type_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, SIGParser::RuleType_id); + enterRule(_localctx, 66, PrismParser::RuleType_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3497,42 +3497,42 @@ SIGParser::Type_idContext* SIGParser::type_id() { //----------------- Insert_blockContext ------------------------------------------------------------------ -SIGParser::Insert_blockContext::Insert_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Insert_blockContext::Insert_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Insert_blockContext::INSERT_BLOCK() { - return getToken(SIGParser::INSERT_BLOCK, 0); +tree::TerminalNode* PrismParser::Insert_blockContext::INSERT_BLOCK() { + return getToken(PrismParser::INSERT_BLOCK, 0); } -size_t SIGParser::Insert_blockContext::getRuleIndex() const { - return SIGParser::RuleInsert_block; +size_t PrismParser::Insert_blockContext::getRuleIndex() const { + return PrismParser::RuleInsert_block; } -void SIGParser::Insert_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Insert_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterInsert_block(this); } -void SIGParser::Insert_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Insert_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitInsert_block(this); } -std::any SIGParser::Insert_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Insert_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitInsert_block(this); else return visitor->visitChildren(this); } -SIGParser::Insert_blockContext* SIGParser::insert_block() { +PrismParser::Insert_blockContext* PrismParser::insert_block() { Insert_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, SIGParser::RuleInsert_block); + enterRule(_localctx, 68, PrismParser::RuleInsert_block); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3544,7 +3544,7 @@ SIGParser::Insert_blockContext* SIGParser::insert_block() { try { enterOuterAlt(_localctx, 1); setState(416); - match(SIGParser::INSERT_BLOCK); + match(PrismParser::INSERT_BLOCK); } catch (RecognitionException &e) { @@ -3558,46 +3558,46 @@ SIGParser::Insert_blockContext* SIGParser::insert_block() { //----------------- Shader_pathContext ------------------------------------------------------------------ -SIGParser::Shader_pathContext::Shader_pathContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Shader_pathContext::Shader_pathContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Shader_pathContext::STRING() { - return getToken(SIGParser::STRING, 0); +tree::TerminalNode* PrismParser::Shader_pathContext::STRING() { + return getToken(PrismParser::STRING, 0); } -tree::TerminalNode* SIGParser::Shader_pathContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Shader_pathContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Shader_pathContext::getRuleIndex() const { - return SIGParser::RuleShader_path; +size_t PrismParser::Shader_pathContext::getRuleIndex() const { + return PrismParser::RuleShader_path; } -void SIGParser::Shader_pathContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Shader_pathContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterShader_path(this); } -void SIGParser::Shader_pathContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Shader_pathContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitShader_path(this); } -std::any SIGParser::Shader_pathContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Shader_pathContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitShader_path(this); else return visitor->visitChildren(this); } -SIGParser::Shader_pathContext* SIGParser::shader_path() { +PrismParser::Shader_pathContext* PrismParser::shader_path() { Shader_pathContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, SIGParser::RuleShader_path); + enterRule(_localctx, 70, PrismParser::RuleShader_path); size_t _la = 0; #if __cplusplus > 201703L @@ -3611,9 +3611,9 @@ SIGParser::Shader_pathContext* SIGParser::shader_path() { enterOuterAlt(_localctx, 1); setState(418); _la = _input->LA(1); - if (!(_la == SIGParser::ID + if (!(_la == PrismParser::ID - || _la == SIGParser::STRING)) { + || _la == PrismParser::STRING)) { _errHandler->recoverInline(this); } else { @@ -3633,50 +3633,50 @@ SIGParser::Shader_pathContext* SIGParser::shader_path() { //----------------- InheritContext ------------------------------------------------------------------ -SIGParser::InheritContext::InheritContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::InheritContext::InheritContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::InheritContext::COLON() { - return getToken(SIGParser::COLON, 0); +tree::TerminalNode* PrismParser::InheritContext::COLON() { + return getToken(PrismParser::COLON, 0); } -std::vector SIGParser::InheritContext::inherit_id() { - return getRuleContexts(); +std::vector PrismParser::InheritContext::inherit_id() { + return getRuleContexts(); } -SIGParser::Inherit_idContext* SIGParser::InheritContext::inherit_id(size_t i) { - return getRuleContext(i); +PrismParser::Inherit_idContext* PrismParser::InheritContext::inherit_id(size_t i) { + return getRuleContext(i); } -size_t SIGParser::InheritContext::getRuleIndex() const { - return SIGParser::RuleInherit; +size_t PrismParser::InheritContext::getRuleIndex() const { + return PrismParser::RuleInherit; } -void SIGParser::InheritContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::InheritContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterInherit(this); } -void SIGParser::InheritContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::InheritContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitInherit(this); } -std::any SIGParser::InheritContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::InheritContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitInherit(this); else return visitor->visitChildren(this); } -SIGParser::InheritContext* SIGParser::inherit() { +PrismParser::InheritContext* PrismParser::inherit() { InheritContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 72, SIGParser::RuleInherit); + enterRule(_localctx, 72, PrismParser::RuleInherit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3689,7 +3689,7 @@ SIGParser::InheritContext* SIGParser::inherit() { size_t alt; enterOuterAlt(_localctx, 1); setState(420); - match(SIGParser::COLON); + match(PrismParser::COLON); setState(421); inherit_id(); setState(426); @@ -3698,7 +3698,7 @@ SIGParser::InheritContext* SIGParser::inherit() { while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { setState(422); - match(SIGParser::T__2); + match(PrismParser::T__2); setState(423); inherit_id(); } @@ -3719,50 +3719,50 @@ SIGParser::InheritContext* SIGParser::inherit() { //----------------- Layout_statContext ------------------------------------------------------------------ -SIGParser::Layout_statContext::Layout_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Layout_statContext::Layout_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Slot_declarationContext* SIGParser::Layout_statContext::slot_declaration() { - return getRuleContext(0); +PrismParser::Slot_declarationContext* PrismParser::Layout_statContext::slot_declaration() { + return getRuleContext(0); } -SIGParser::Sampler_declarationContext* SIGParser::Layout_statContext::sampler_declaration() { - return getRuleContext(0); +PrismParser::Sampler_declarationContext* PrismParser::Layout_statContext::sampler_declaration() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Layout_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Layout_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Layout_statContext::getRuleIndex() const { - return SIGParser::RuleLayout_stat; +size_t PrismParser::Layout_statContext::getRuleIndex() const { + return PrismParser::RuleLayout_stat; } -void SIGParser::Layout_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Layout_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLayout_stat(this); } -void SIGParser::Layout_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Layout_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLayout_stat(this); } -std::any SIGParser::Layout_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Layout_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLayout_stat(this); else return visitor->visitChildren(this); } -SIGParser::Layout_statContext* SIGParser::layout_stat() { +PrismParser::Layout_statContext* PrismParser::layout_stat() { Layout_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, SIGParser::RuleLayout_stat); + enterRule(_localctx, 74, PrismParser::RuleLayout_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3775,24 +3775,24 @@ SIGParser::Layout_statContext* SIGParser::layout_stat() { setState(432); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::SLOT: { + case PrismParser::SLOT: { enterOuterAlt(_localctx, 1); setState(429); slot_declaration(); break; } - case SIGParser::T__3: { + case PrismParser::T__3: { enterOuterAlt(_localctx, 2); setState(430); sampler_declaration(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 3); setState(431); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -3812,46 +3812,46 @@ SIGParser::Layout_statContext* SIGParser::layout_stat() { //----------------- Layout_blockContext ------------------------------------------------------------------ -SIGParser::Layout_blockContext::Layout_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Layout_blockContext::Layout_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Layout_blockContext::layout_stat() { - return getRuleContexts(); +std::vector PrismParser::Layout_blockContext::layout_stat() { + return getRuleContexts(); } -SIGParser::Layout_statContext* SIGParser::Layout_blockContext::layout_stat(size_t i) { - return getRuleContext(i); +PrismParser::Layout_statContext* PrismParser::Layout_blockContext::layout_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Layout_blockContext::getRuleIndex() const { - return SIGParser::RuleLayout_block; +size_t PrismParser::Layout_blockContext::getRuleIndex() const { + return PrismParser::RuleLayout_block; } -void SIGParser::Layout_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Layout_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLayout_block(this); } -void SIGParser::Layout_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Layout_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLayout_block(this); } -std::any SIGParser::Layout_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Layout_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLayout_block(this); else return visitor->visitChildren(this); } -SIGParser::Layout_blockContext* SIGParser::layout_block() { +PrismParser::Layout_blockContext* PrismParser::layout_block() { Layout_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, SIGParser::RuleLayout_block); + enterRule(_localctx, 76, PrismParser::RuleLayout_block); size_t _la = 0; #if __cplusplus > 201703L @@ -3866,9 +3866,9 @@ SIGParser::Layout_blockContext* SIGParser::layout_block() { setState(437); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::T__3 || _la == SIGParser::SLOT + while (_la == PrismParser::T__3 || _la == PrismParser::SLOT - || _la == SIGParser::COMMENT) { + || _la == PrismParser::COMMENT) { setState(434); layout_stat(); setState(439); @@ -3888,62 +3888,62 @@ SIGParser::Layout_blockContext* SIGParser::layout_block() { //----------------- Layout_definitionContext ------------------------------------------------------------------ -SIGParser::Layout_definitionContext::Layout_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Layout_definitionContext::Layout_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Layout_definitionContext::LAYOUT() { - return getToken(SIGParser::LAYOUT, 0); +tree::TerminalNode* PrismParser::Layout_definitionContext::LAYOUT() { + return getToken(PrismParser::LAYOUT, 0); } -SIGParser::Name_idContext* SIGParser::Layout_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Layout_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Layout_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Layout_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Layout_blockContext* SIGParser::Layout_definitionContext::layout_block() { - return getRuleContext(0); +PrismParser::Layout_blockContext* PrismParser::Layout_definitionContext::layout_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Layout_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Layout_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -SIGParser::InheritContext* SIGParser::Layout_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Layout_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Layout_definitionContext::getRuleIndex() const { - return SIGParser::RuleLayout_definition; +size_t PrismParser::Layout_definitionContext::getRuleIndex() const { + return PrismParser::RuleLayout_definition; } -void SIGParser::Layout_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Layout_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterLayout_definition(this); } -void SIGParser::Layout_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Layout_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitLayout_definition(this); } -std::any SIGParser::Layout_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Layout_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitLayout_definition(this); else return visitor->visitChildren(this); } -SIGParser::Layout_definitionContext* SIGParser::layout_definition() { +PrismParser::Layout_definitionContext* PrismParser::layout_definition() { Layout_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, SIGParser::RuleLayout_definition); + enterRule(_localctx, 78, PrismParser::RuleLayout_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -3956,23 +3956,23 @@ SIGParser::Layout_definitionContext* SIGParser::layout_definition() { try { enterOuterAlt(_localctx, 1); setState(440); - match(SIGParser::LAYOUT); + match(PrismParser::LAYOUT); setState(441); name_id(); setState(443); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(442); inherit(); } setState(445); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(446); layout_block(); setState(447); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -3986,54 +3986,54 @@ SIGParser::Layout_definitionContext* SIGParser::layout_definition() { //----------------- Table_statContext ------------------------------------------------------------------ -SIGParser::Table_statContext::Table_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Table_statContext::Table_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Value_declarationContext* SIGParser::Table_statContext::value_declaration() { - return getRuleContext(0); +PrismParser::Value_declarationContext* PrismParser::Table_statContext::value_declaration() { + return getRuleContext(0); } -SIGParser::Function_definitionContext* SIGParser::Table_statContext::function_definition() { - return getRuleContext(0); +PrismParser::Function_definitionContext* PrismParser::Table_statContext::function_definition() { + return getRuleContext(0); } -SIGParser::Insert_blockContext* SIGParser::Table_statContext::insert_block() { - return getRuleContext(0); +PrismParser::Insert_blockContext* PrismParser::Table_statContext::insert_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Table_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Table_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Table_statContext::getRuleIndex() const { - return SIGParser::RuleTable_stat; +size_t PrismParser::Table_statContext::getRuleIndex() const { + return PrismParser::RuleTable_stat; } -void SIGParser::Table_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Table_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTable_stat(this); } -void SIGParser::Table_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Table_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTable_stat(this); } -std::any SIGParser::Table_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Table_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_stat(this); else return visitor->visitChildren(this); } -SIGParser::Table_statContext* SIGParser::table_stat() { +PrismParser::Table_statContext* PrismParser::table_stat() { Table_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, SIGParser::RuleTable_stat); + enterRule(_localctx, 80, PrismParser::RuleTable_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4070,7 +4070,7 @@ SIGParser::Table_statContext* SIGParser::table_stat() { case 4: { enterOuterAlt(_localctx, 4); setState(452); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -4090,74 +4090,74 @@ SIGParser::Table_statContext* SIGParser::table_stat() { //----------------- Function_definitionContext ------------------------------------------------------------------ -SIGParser::Function_definitionContext::Function_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Function_definitionContext::Function_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Type_idContext* SIGParser::Function_definitionContext::type_id() { - return getRuleContext(0); +PrismParser::Type_idContext* PrismParser::Function_definitionContext::type_id() { + return getRuleContext(0); } -SIGParser::Name_idContext* SIGParser::Function_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Function_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Function_definitionContext::OPAR() { - return getToken(SIGParser::OPAR, 0); +tree::TerminalNode* PrismParser::Function_definitionContext::OPAR() { + return getToken(PrismParser::OPAR, 0); } -SIGParser::Function_paramsContext* SIGParser::Function_definitionContext::function_params() { - return getRuleContext(0); +PrismParser::Function_paramsContext* PrismParser::Function_definitionContext::function_params() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Function_definitionContext::CPAR() { - return getToken(SIGParser::CPAR, 0); +tree::TerminalNode* PrismParser::Function_definitionContext::CPAR() { + return getToken(PrismParser::CPAR, 0); } -tree::TerminalNode* SIGParser::Function_definitionContext::FUNC_BODY() { - return getToken(SIGParser::FUNC_BODY, 0); +tree::TerminalNode* PrismParser::Function_definitionContext::FUNC_BODY() { + return getToken(PrismParser::FUNC_BODY, 0); } -std::vector SIGParser::Function_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Function_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Function_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Function_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::Function_semanticContext* SIGParser::Function_definitionContext::function_semantic() { - return getRuleContext(0); +PrismParser::Function_semanticContext* PrismParser::Function_definitionContext::function_semantic() { + return getRuleContext(0); } -size_t SIGParser::Function_definitionContext::getRuleIndex() const { - return SIGParser::RuleFunction_definition; +size_t PrismParser::Function_definitionContext::getRuleIndex() const { + return PrismParser::RuleFunction_definition; } -void SIGParser::Function_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunction_definition(this); } -void SIGParser::Function_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunction_definition(this); } -std::any SIGParser::Function_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Function_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFunction_definition(this); else return visitor->visitChildren(this); } -SIGParser::Function_definitionContext* SIGParser::function_definition() { +PrismParser::Function_definitionContext* PrismParser::function_definition() { Function_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, SIGParser::RuleFunction_definition); + enterRule(_localctx, 82, PrismParser::RuleFunction_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -4187,21 +4187,21 @@ SIGParser::Function_definitionContext* SIGParser::function_definition() { setState(462); name_id(); setState(463); - match(SIGParser::OPAR); + match(PrismParser::OPAR); setState(464); function_params(); setState(465); - match(SIGParser::CPAR); + match(PrismParser::CPAR); setState(467); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(466); function_semantic(); } setState(469); - match(SIGParser::FUNC_BODY); + match(PrismParser::FUNC_BODY); } catch (RecognitionException &e) { @@ -4215,62 +4215,62 @@ SIGParser::Function_definitionContext* SIGParser::function_definition() { //----------------- Function_paramsContext ------------------------------------------------------------------ -SIGParser::Function_paramsContext::Function_paramsContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Function_paramsContext::Function_paramsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Function_paramsContext::OPAR() { - return getTokens(SIGParser::OPAR); +std::vector PrismParser::Function_paramsContext::OPAR() { + return getTokens(PrismParser::OPAR); } -tree::TerminalNode* SIGParser::Function_paramsContext::OPAR(size_t i) { - return getToken(SIGParser::OPAR, i); +tree::TerminalNode* PrismParser::Function_paramsContext::OPAR(size_t i) { + return getToken(PrismParser::OPAR, i); } -std::vector SIGParser::Function_paramsContext::function_params() { - return getRuleContexts(); +std::vector PrismParser::Function_paramsContext::function_params() { + return getRuleContexts(); } -SIGParser::Function_paramsContext* SIGParser::Function_paramsContext::function_params(size_t i) { - return getRuleContext(i); +PrismParser::Function_paramsContext* PrismParser::Function_paramsContext::function_params(size_t i) { + return getRuleContext(i); } -std::vector SIGParser::Function_paramsContext::CPAR() { - return getTokens(SIGParser::CPAR); +std::vector PrismParser::Function_paramsContext::CPAR() { + return getTokens(PrismParser::CPAR); } -tree::TerminalNode* SIGParser::Function_paramsContext::CPAR(size_t i) { - return getToken(SIGParser::CPAR, i); +tree::TerminalNode* PrismParser::Function_paramsContext::CPAR(size_t i) { + return getToken(PrismParser::CPAR, i); } -size_t SIGParser::Function_paramsContext::getRuleIndex() const { - return SIGParser::RuleFunction_params; +size_t PrismParser::Function_paramsContext::getRuleIndex() const { + return PrismParser::RuleFunction_params; } -void SIGParser::Function_paramsContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_paramsContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunction_params(this); } -void SIGParser::Function_paramsContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_paramsContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunction_params(this); } -std::any SIGParser::Function_paramsContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Function_paramsContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFunction_params(this); else return visitor->visitChildren(this); } -SIGParser::Function_paramsContext* SIGParser::function_params() { +PrismParser::Function_paramsContext* PrismParser::function_params() { Function_paramsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, SIGParser::RuleFunction_params); + enterRule(_localctx, 84, PrismParser::RuleFunction_params); size_t _la = 0; #if __cplusplus > 201703L @@ -4291,122 +4291,122 @@ SIGParser::Function_paramsContext* SIGParser::function_params() { setState(476); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::OPAR: { + case PrismParser::OPAR: { setState(471); - match(SIGParser::OPAR); + match(PrismParser::OPAR); setState(472); function_params(); setState(473); - match(SIGParser::CPAR); + match(PrismParser::CPAR); break; } - case SIGParser::T__0: - case SIGParser::T__1: - case SIGParser::T__2: - case SIGParser::T__3: - case SIGParser::T__4: - case SIGParser::T__5: - case SIGParser::T__6: - case SIGParser::T__7: - case SIGParser::T__8: - case SIGParser::T__9: - case SIGParser::T__10: - case SIGParser::T__11: - case SIGParser::T__12: - case SIGParser::T__13: - case SIGParser::T__14: - case SIGParser::T__15: - case SIGParser::T__16: - case SIGParser::T__17: - case SIGParser::T__18: - case SIGParser::T__19: - case SIGParser::T__20: - case SIGParser::T__21: - case SIGParser::T__22: - case SIGParser::T__23: - case SIGParser::T__24: - case SIGParser::T__25: - case SIGParser::T__26: - case SIGParser::T__27: - case SIGParser::T__28: - case SIGParser::T__29: - case SIGParser::T__30: - case SIGParser::T__31: - case SIGParser::T__32: - case SIGParser::T__33: - case SIGParser::T__34: - case SIGParser::T__35: - case SIGParser::T__36: - case SIGParser::T__37: - case SIGParser::T__38: - case SIGParser::T__39: - case SIGParser::T__40: - case SIGParser::T__41: - case SIGParser::T__42: - case SIGParser::T__43: - case SIGParser::OR: - case SIGParser::AND: - case SIGParser::PIPE: - case SIGParser::EQ: - case SIGParser::NEQ: - case SIGParser::GT: - case SIGParser::LT: - case SIGParser::GTEQ: - case SIGParser::LTEQ: - case SIGParser::PLUS: - case SIGParser::MINUS: - case SIGParser::DIV: - case SIGParser::MOD: - case SIGParser::POW: - case SIGParser::NOT: - case SIGParser::SCOL: - case SIGParser::COLON: - case SIGParser::DOT: - case SIGParser::ASSIGN: - case SIGParser::OBRACE: - case SIGParser::CBRACE: - case SIGParser::OSBRACE: - case SIGParser::CSBRACE: - case SIGParser::TRUE: - case SIGParser::FALSE: - case SIGParser::LOG: - case SIGParser::LAYOUT: - case SIGParser::STRUCT: - case SIGParser::COMPUTE_PSO: - case SIGParser::GRAPHICS_PSO: - case SIGParser::RAYTRACE_PSO: - case SIGParser::WORKGRAPH_PSO: - case SIGParser::NODE: - case SIGParser::NODE_OUTPUT: - case SIGParser::RAYTRACE_RAYGEN: - case SIGParser::RAYTRACE_PASS: - case SIGParser::PASS: - case SIGParser::VIEW: - case SIGParser::PIPELINE: - case SIGParser::SLOT: - case SIGParser::RT: - case SIGParser::RTV: - case SIGParser::DSV: - case SIGParser::ROOTSIG: - case SIGParser::ENUM: - case SIGParser::ID: - case SIGParser::INT_SCALAR: - case SIGParser::FLOAT_SCALAR: - case SIGParser::STRING: - case SIGParser::RAWEXPR: - case SIGParser::COMMENT: - case SIGParser::SPACE: - case SIGParser::POINTER: - case SIGParser::FUNC_BODY: - case SIGParser::INSERT_START: - case SIGParser::INSERT_END: - case SIGParser::INSERT_BLOCK: { + case PrismParser::T__0: + case PrismParser::T__1: + case PrismParser::T__2: + case PrismParser::T__3: + case PrismParser::T__4: + case PrismParser::T__5: + case PrismParser::T__6: + case PrismParser::T__7: + case PrismParser::T__8: + case PrismParser::T__9: + case PrismParser::T__10: + case PrismParser::T__11: + case PrismParser::T__12: + case PrismParser::T__13: + case PrismParser::T__14: + case PrismParser::T__15: + case PrismParser::T__16: + case PrismParser::T__17: + case PrismParser::T__18: + case PrismParser::T__19: + case PrismParser::T__20: + case PrismParser::T__21: + case PrismParser::T__22: + case PrismParser::T__23: + case PrismParser::T__24: + case PrismParser::T__25: + case PrismParser::T__26: + case PrismParser::T__27: + case PrismParser::T__28: + case PrismParser::T__29: + case PrismParser::T__30: + case PrismParser::T__31: + case PrismParser::T__32: + case PrismParser::T__33: + case PrismParser::T__34: + case PrismParser::T__35: + case PrismParser::T__36: + case PrismParser::T__37: + case PrismParser::T__38: + case PrismParser::T__39: + case PrismParser::T__40: + case PrismParser::T__41: + case PrismParser::T__42: + case PrismParser::T__43: + case PrismParser::OR: + case PrismParser::AND: + case PrismParser::PIPE: + case PrismParser::EQ: + case PrismParser::NEQ: + case PrismParser::GT: + case PrismParser::LT: + case PrismParser::GTEQ: + case PrismParser::LTEQ: + case PrismParser::PLUS: + case PrismParser::MINUS: + case PrismParser::DIV: + case PrismParser::MOD: + case PrismParser::POW: + case PrismParser::NOT: + case PrismParser::SCOL: + case PrismParser::COLON: + case PrismParser::DOT: + case PrismParser::ASSIGN: + case PrismParser::OBRACE: + case PrismParser::CBRACE: + case PrismParser::OSBRACE: + case PrismParser::CSBRACE: + case PrismParser::TRUE: + case PrismParser::FALSE: + case PrismParser::LOG: + case PrismParser::LAYOUT: + case PrismParser::STRUCT: + case PrismParser::COMPUTE_PSO: + case PrismParser::GRAPHICS_PSO: + case PrismParser::RAYTRACE_PSO: + case PrismParser::WORKGRAPH_PSO: + case PrismParser::NODE: + case PrismParser::NODE_OUTPUT: + case PrismParser::RAYTRACE_RAYGEN: + case PrismParser::RAYTRACE_PASS: + case PrismParser::PASS: + case PrismParser::VIEW: + case PrismParser::PIPELINE: + case PrismParser::SLOT: + case PrismParser::RT: + case PrismParser::RTV: + case PrismParser::DSV: + case PrismParser::ROOTSIG: + case PrismParser::ENUM: + case PrismParser::ID: + case PrismParser::INT_SCALAR: + case PrismParser::FLOAT_SCALAR: + case PrismParser::STRING: + case PrismParser::RAWEXPR: + case PrismParser::COMMENT: + case PrismParser::SPACE: + case PrismParser::POINTER: + case PrismParser::FUNC_BODY: + case PrismParser::INSERT_START: + case PrismParser::INSERT_END: + case PrismParser::INSERT_BLOCK: { setState(475); _la = _input->LA(1); - if (_la == 0 || _la == Token::EOF || (_la == SIGParser::OPAR + if (_la == 0 || _la == Token::EOF || (_la == PrismParser::OPAR - || _la == SIGParser::CPAR)) { + || _la == PrismParser::CPAR)) { _errHandler->recoverInline(this); } else { @@ -4436,46 +4436,46 @@ SIGParser::Function_paramsContext* SIGParser::function_params() { //----------------- Function_semanticContext ------------------------------------------------------------------ -SIGParser::Function_semanticContext::Function_semanticContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Function_semanticContext::Function_semanticContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Function_semanticContext::COLON() { - return getToken(SIGParser::COLON, 0); +tree::TerminalNode* PrismParser::Function_semanticContext::COLON() { + return getToken(PrismParser::COLON, 0); } -tree::TerminalNode* SIGParser::Function_semanticContext::ID() { - return getToken(SIGParser::ID, 0); +tree::TerminalNode* PrismParser::Function_semanticContext::ID() { + return getToken(PrismParser::ID, 0); } -size_t SIGParser::Function_semanticContext::getRuleIndex() const { - return SIGParser::RuleFunction_semantic; +size_t PrismParser::Function_semanticContext::getRuleIndex() const { + return PrismParser::RuleFunction_semantic; } -void SIGParser::Function_semanticContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_semanticContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterFunction_semantic(this); } -void SIGParser::Function_semanticContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Function_semanticContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitFunction_semantic(this); } -std::any SIGParser::Function_semanticContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Function_semanticContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitFunction_semantic(this); else return visitor->visitChildren(this); } -SIGParser::Function_semanticContext* SIGParser::function_semantic() { +PrismParser::Function_semanticContext* PrismParser::function_semantic() { Function_semanticContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, SIGParser::RuleFunction_semantic); + enterRule(_localctx, 86, PrismParser::RuleFunction_semantic); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4487,9 +4487,9 @@ SIGParser::Function_semanticContext* SIGParser::function_semantic() { try { enterOuterAlt(_localctx, 1); setState(481); - match(SIGParser::COLON); + match(PrismParser::COLON); setState(482); - match(SIGParser::ID); + match(PrismParser::ID); } catch (RecognitionException &e) { @@ -4503,46 +4503,46 @@ SIGParser::Function_semanticContext* SIGParser::function_semantic() { //----------------- Table_blockContext ------------------------------------------------------------------ -SIGParser::Table_blockContext::Table_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Table_blockContext::Table_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Table_blockContext::table_stat() { - return getRuleContexts(); +std::vector PrismParser::Table_blockContext::table_stat() { + return getRuleContexts(); } -SIGParser::Table_statContext* SIGParser::Table_blockContext::table_stat(size_t i) { - return getRuleContext(i); +PrismParser::Table_statContext* PrismParser::Table_blockContext::table_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Table_blockContext::getRuleIndex() const { - return SIGParser::RuleTable_block; +size_t PrismParser::Table_blockContext::getRuleIndex() const { + return PrismParser::RuleTable_block; } -void SIGParser::Table_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Table_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTable_block(this); } -void SIGParser::Table_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Table_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTable_block(this); } -std::any SIGParser::Table_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Table_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_block(this); else return visitor->visitChildren(this); } -SIGParser::Table_blockContext* SIGParser::table_block() { +PrismParser::Table_blockContext* PrismParser::table_block() { Table_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, SIGParser::RuleTable_block); + enterRule(_localctx, 88, PrismParser::RuleTable_block); size_t _la = 0; #if __cplusplus > 201703L @@ -4578,70 +4578,70 @@ SIGParser::Table_blockContext* SIGParser::table_block() { //----------------- Table_definitionContext ------------------------------------------------------------------ -SIGParser::Table_definitionContext::Table_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Table_definitionContext::Table_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Table_definitionContext::STRUCT() { - return getToken(SIGParser::STRUCT, 0); +tree::TerminalNode* PrismParser::Table_definitionContext::STRUCT() { + return getToken(PrismParser::STRUCT, 0); } -SIGParser::Name_idContext* SIGParser::Table_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Table_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Table_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Table_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Table_blockContext* SIGParser::Table_definitionContext::table_block() { - return getRuleContext(0); +PrismParser::Table_blockContext* PrismParser::Table_definitionContext::table_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Table_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Table_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Table_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Table_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Table_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Table_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Table_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Table_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Table_definitionContext::getRuleIndex() const { - return SIGParser::RuleTable_definition; +size_t PrismParser::Table_definitionContext::getRuleIndex() const { + return PrismParser::RuleTable_definition; } -void SIGParser::Table_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Table_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterTable_definition(this); } -void SIGParser::Table_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Table_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitTable_definition(this); } -std::any SIGParser::Table_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Table_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitTable_definition(this); else return visitor->visitChildren(this); } -SIGParser::Table_definitionContext* SIGParser::table_definition() { +PrismParser::Table_definitionContext* PrismParser::table_definition() { Table_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, SIGParser::RuleTable_definition); + enterRule(_localctx, 90, PrismParser::RuleTable_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -4667,23 +4667,23 @@ SIGParser::Table_definitionContext* SIGParser::table_definition() { alt = getInterpreter()->adaptivePredict(_input, 35, _ctx); } setState(496); - match(SIGParser::STRUCT); + match(PrismParser::STRUCT); setState(497); name_id(); setState(499); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(498); inherit(); } setState(501); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(502); table_block(); setState(503); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -4697,50 +4697,50 @@ SIGParser::Table_definitionContext* SIGParser::table_definition() { //----------------- Rt_color_declarationContext ------------------------------------------------------------------ -SIGParser::Rt_color_declarationContext::Rt_color_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rt_color_declarationContext::Rt_color_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Type_idContext* SIGParser::Rt_color_declarationContext::type_id() { - return getRuleContext(0); +PrismParser::Type_idContext* PrismParser::Rt_color_declarationContext::type_id() { + return getRuleContext(0); } -SIGParser::Name_idContext* SIGParser::Rt_color_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Rt_color_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rt_color_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Rt_color_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Rt_color_declarationContext::getRuleIndex() const { - return SIGParser::RuleRt_color_declaration; +size_t PrismParser::Rt_color_declarationContext::getRuleIndex() const { + return PrismParser::RuleRt_color_declaration; } -void SIGParser::Rt_color_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_color_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRt_color_declaration(this); } -void SIGParser::Rt_color_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_color_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRt_color_declaration(this); } -std::any SIGParser::Rt_color_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rt_color_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRt_color_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Rt_color_declarationContext* SIGParser::rt_color_declaration() { +PrismParser::Rt_color_declarationContext* PrismParser::rt_color_declaration() { Rt_color_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, SIGParser::RuleRt_color_declaration); + enterRule(_localctx, 92, PrismParser::RuleRt_color_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4756,7 +4756,7 @@ SIGParser::Rt_color_declarationContext* SIGParser::rt_color_declaration() { setState(506); name_id(); setState(507); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -4770,50 +4770,50 @@ SIGParser::Rt_color_declarationContext* SIGParser::rt_color_declaration() { //----------------- Rt_ds_declarationContext ------------------------------------------------------------------ -SIGParser::Rt_ds_declarationContext::Rt_ds_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rt_ds_declarationContext::Rt_ds_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Rt_ds_declarationContext::DSV() { - return getToken(SIGParser::DSV, 0); +tree::TerminalNode* PrismParser::Rt_ds_declarationContext::DSV() { + return getToken(PrismParser::DSV, 0); } -SIGParser::Name_idContext* SIGParser::Rt_ds_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Rt_ds_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rt_ds_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Rt_ds_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Rt_ds_declarationContext::getRuleIndex() const { - return SIGParser::RuleRt_ds_declaration; +size_t PrismParser::Rt_ds_declarationContext::getRuleIndex() const { + return PrismParser::RuleRt_ds_declaration; } -void SIGParser::Rt_ds_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_ds_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRt_ds_declaration(this); } -void SIGParser::Rt_ds_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_ds_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRt_ds_declaration(this); } -std::any SIGParser::Rt_ds_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rt_ds_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRt_ds_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Rt_ds_declarationContext* SIGParser::rt_ds_declaration() { +PrismParser::Rt_ds_declarationContext* PrismParser::rt_ds_declaration() { Rt_ds_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, SIGParser::RuleRt_ds_declaration); + enterRule(_localctx, 94, PrismParser::RuleRt_ds_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4825,11 +4825,11 @@ SIGParser::Rt_ds_declarationContext* SIGParser::rt_ds_declaration() { try { enterOuterAlt(_localctx, 1); setState(509); - match(SIGParser::DSV); + match(PrismParser::DSV); setState(510); name_id(); setState(511); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -4843,50 +4843,50 @@ SIGParser::Rt_ds_declarationContext* SIGParser::rt_ds_declaration() { //----------------- Rt_statContext ------------------------------------------------------------------ -SIGParser::Rt_statContext::Rt_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rt_statContext::Rt_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Rt_color_declarationContext* SIGParser::Rt_statContext::rt_color_declaration() { - return getRuleContext(0); +PrismParser::Rt_color_declarationContext* PrismParser::Rt_statContext::rt_color_declaration() { + return getRuleContext(0); } -SIGParser::Rt_ds_declarationContext* SIGParser::Rt_statContext::rt_ds_declaration() { - return getRuleContext(0); +PrismParser::Rt_ds_declarationContext* PrismParser::Rt_statContext::rt_ds_declaration() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rt_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Rt_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Rt_statContext::getRuleIndex() const { - return SIGParser::RuleRt_stat; +size_t PrismParser::Rt_statContext::getRuleIndex() const { + return PrismParser::RuleRt_stat; } -void SIGParser::Rt_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRt_stat(this); } -void SIGParser::Rt_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRt_stat(this); } -std::any SIGParser::Rt_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rt_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRt_stat(this); else return visitor->visitChildren(this); } -SIGParser::Rt_statContext* SIGParser::rt_stat() { +PrismParser::Rt_statContext* PrismParser::rt_stat() { Rt_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, SIGParser::RuleRt_stat); + enterRule(_localctx, 96, PrismParser::RuleRt_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4899,24 +4899,24 @@ SIGParser::Rt_statContext* SIGParser::rt_stat() { setState(516); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::ID: { + case PrismParser::ID: { enterOuterAlt(_localctx, 1); setState(513); rt_color_declaration(); break; } - case SIGParser::DSV: { + case PrismParser::DSV: { enterOuterAlt(_localctx, 2); setState(514); rt_ds_declaration(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 3); setState(515); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -4936,46 +4936,46 @@ SIGParser::Rt_statContext* SIGParser::rt_stat() { //----------------- Rt_blockContext ------------------------------------------------------------------ -SIGParser::Rt_blockContext::Rt_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rt_blockContext::Rt_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Rt_blockContext::rt_stat() { - return getRuleContexts(); +std::vector PrismParser::Rt_blockContext::rt_stat() { + return getRuleContexts(); } -SIGParser::Rt_statContext* SIGParser::Rt_blockContext::rt_stat(size_t i) { - return getRuleContext(i); +PrismParser::Rt_statContext* PrismParser::Rt_blockContext::rt_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Rt_blockContext::getRuleIndex() const { - return SIGParser::RuleRt_block; +size_t PrismParser::Rt_blockContext::getRuleIndex() const { + return PrismParser::RuleRt_block; } -void SIGParser::Rt_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRt_block(this); } -void SIGParser::Rt_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRt_block(this); } -std::any SIGParser::Rt_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rt_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRt_block(this); else return visitor->visitChildren(this); } -SIGParser::Rt_blockContext* SIGParser::rt_block() { +PrismParser::Rt_blockContext* PrismParser::rt_block() { Rt_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, SIGParser::RuleRt_block); + enterRule(_localctx, 98, PrismParser::RuleRt_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5011,58 +5011,58 @@ SIGParser::Rt_blockContext* SIGParser::rt_block() { //----------------- Rt_definitionContext ------------------------------------------------------------------ -SIGParser::Rt_definitionContext::Rt_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rt_definitionContext::Rt_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Rt_definitionContext::RT() { - return getToken(SIGParser::RT, 0); +tree::TerminalNode* PrismParser::Rt_definitionContext::RT() { + return getToken(PrismParser::RT, 0); } -SIGParser::Name_idContext* SIGParser::Rt_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Rt_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rt_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Rt_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Rt_blockContext* SIGParser::Rt_definitionContext::rt_block() { - return getRuleContext(0); +PrismParser::Rt_blockContext* PrismParser::Rt_definitionContext::rt_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rt_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Rt_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -size_t SIGParser::Rt_definitionContext::getRuleIndex() const { - return SIGParser::RuleRt_definition; +size_t PrismParser::Rt_definitionContext::getRuleIndex() const { + return PrismParser::RuleRt_definition; } -void SIGParser::Rt_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRt_definition(this); } -void SIGParser::Rt_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rt_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRt_definition(this); } -std::any SIGParser::Rt_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rt_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRt_definition(this); else return visitor->visitChildren(this); } -SIGParser::Rt_definitionContext* SIGParser::rt_definition() { +PrismParser::Rt_definitionContext* PrismParser::rt_definition() { Rt_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, SIGParser::RuleRt_definition); + enterRule(_localctx, 100, PrismParser::RuleRt_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5074,15 +5074,15 @@ SIGParser::Rt_definitionContext* SIGParser::rt_definition() { try { enterOuterAlt(_localctx, 1); setState(524); - match(SIGParser::RT); + match(PrismParser::RT); setState(525); name_id(); setState(526); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(527); rt_block(); setState(528); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -5096,42 +5096,42 @@ SIGParser::Rt_definitionContext* SIGParser::rt_definition() { //----------------- Array_value_holderContext ------------------------------------------------------------------ -SIGParser::Array_value_holderContext::Array_value_holderContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Array_value_holderContext::Array_value_holderContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Value_idContext* SIGParser::Array_value_holderContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Array_value_holderContext::value_id() { + return getRuleContext(0); } -size_t SIGParser::Array_value_holderContext::getRuleIndex() const { - return SIGParser::RuleArray_value_holder; +size_t PrismParser::Array_value_holderContext::getRuleIndex() const { + return PrismParser::RuleArray_value_holder; } -void SIGParser::Array_value_holderContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Array_value_holderContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArray_value_holder(this); } -void SIGParser::Array_value_holderContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Array_value_holderContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArray_value_holder(this); } -std::any SIGParser::Array_value_holderContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Array_value_holderContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitArray_value_holder(this); else return visitor->visitChildren(this); } -SIGParser::Array_value_holderContext* SIGParser::array_value_holder() { +PrismParser::Array_value_holderContext* PrismParser::array_value_holder() { Array_value_holderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, SIGParser::RuleArray_value_holder); + enterRule(_localctx, 102, PrismParser::RuleArray_value_holder); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5157,54 +5157,54 @@ SIGParser::Array_value_holderContext* SIGParser::array_value_holder() { //----------------- Array_value_idsContext ------------------------------------------------------------------ -SIGParser::Array_value_idsContext::Array_value_idsContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Array_value_idsContext::Array_value_idsContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Array_value_idsContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Array_value_idsContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -std::vector SIGParser::Array_value_idsContext::array_value_holder() { - return getRuleContexts(); +std::vector PrismParser::Array_value_idsContext::array_value_holder() { + return getRuleContexts(); } -SIGParser::Array_value_holderContext* SIGParser::Array_value_idsContext::array_value_holder(size_t i) { - return getRuleContext(i); +PrismParser::Array_value_holderContext* PrismParser::Array_value_idsContext::array_value_holder(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* SIGParser::Array_value_idsContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Array_value_idsContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -size_t SIGParser::Array_value_idsContext::getRuleIndex() const { - return SIGParser::RuleArray_value_ids; +size_t PrismParser::Array_value_idsContext::getRuleIndex() const { + return PrismParser::RuleArray_value_ids; } -void SIGParser::Array_value_idsContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Array_value_idsContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterArray_value_ids(this); } -void SIGParser::Array_value_idsContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Array_value_idsContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitArray_value_ids(this); } -std::any SIGParser::Array_value_idsContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Array_value_idsContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitArray_value_ids(this); else return visitor->visitChildren(this); } -SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { +PrismParser::Array_value_idsContext* PrismParser::array_value_ids() { Array_value_idsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, SIGParser::RuleArray_value_ids); + enterRule(_localctx, 104, PrismParser::RuleArray_value_ids); size_t _la = 0; #if __cplusplus > 201703L @@ -5217,15 +5217,15 @@ SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { try { enterOuterAlt(_localctx, 1); setState(532); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(533); array_value_holder(); setState(538); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::T__2) { + while (_la == PrismParser::T__2) { setState(534); - match(SIGParser::T__2); + match(PrismParser::T__2); setState(535); array_value_holder(); setState(540); @@ -5233,7 +5233,7 @@ SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { _la = _input->LA(1); } setState(541); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -5247,54 +5247,54 @@ SIGParser::Array_value_idsContext* SIGParser::array_value_ids() { //----------------- Root_sigContext ------------------------------------------------------------------ -SIGParser::Root_sigContext::Root_sigContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Root_sigContext::Root_sigContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Root_sigContext::ROOTSIG() { - return getToken(SIGParser::ROOTSIG, 0); +tree::TerminalNode* PrismParser::Root_sigContext::ROOTSIG() { + return getToken(PrismParser::ROOTSIG, 0); } -tree::TerminalNode* SIGParser::Root_sigContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Root_sigContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Name_idContext* SIGParser::Root_sigContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Root_sigContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Root_sigContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Root_sigContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Root_sigContext::getRuleIndex() const { - return SIGParser::RuleRoot_sig; +size_t PrismParser::Root_sigContext::getRuleIndex() const { + return PrismParser::RuleRoot_sig; } -void SIGParser::Root_sigContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Root_sigContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRoot_sig(this); } -void SIGParser::Root_sigContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Root_sigContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRoot_sig(this); } -std::any SIGParser::Root_sigContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Root_sigContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRoot_sig(this); else return visitor->visitChildren(this); } -SIGParser::Root_sigContext* SIGParser::root_sig() { +PrismParser::Root_sigContext* PrismParser::root_sig() { Root_sigContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, SIGParser::RuleRoot_sig); + enterRule(_localctx, 106, PrismParser::RuleRoot_sig); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5306,13 +5306,13 @@ SIGParser::Root_sigContext* SIGParser::root_sig() { try { enterOuterAlt(_localctx, 1); setState(543); - match(SIGParser::ROOTSIG); + match(PrismParser::ROOTSIG); setState(544); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(545); name_id(); setState(546); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -5326,62 +5326,62 @@ SIGParser::Root_sigContext* SIGParser::root_sig() { //----------------- ShaderContext ------------------------------------------------------------------ -SIGParser::ShaderContext::ShaderContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::ShaderContext::ShaderContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Shader_typeContext* SIGParser::ShaderContext::shader_type() { - return getRuleContext(0); +PrismParser::Shader_typeContext* PrismParser::ShaderContext::shader_type() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::ShaderContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::ShaderContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Shader_pathContext* SIGParser::ShaderContext::shader_path() { - return getRuleContext(0); +PrismParser::Shader_pathContext* PrismParser::ShaderContext::shader_path() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::ShaderContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::ShaderContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::ShaderContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::ShaderContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::ShaderContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::ShaderContext::option_block(size_t i) { + return getRuleContext(i); } -size_t SIGParser::ShaderContext::getRuleIndex() const { - return SIGParser::RuleShader; +size_t PrismParser::ShaderContext::getRuleIndex() const { + return PrismParser::RuleShader; } -void SIGParser::ShaderContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::ShaderContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterShader(this); } -void SIGParser::ShaderContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::ShaderContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitShader(this); } -std::any SIGParser::ShaderContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::ShaderContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitShader(this); else return visitor->visitChildren(this); } -SIGParser::ShaderContext* SIGParser::shader() { +PrismParser::ShaderContext* PrismParser::shader() { ShaderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, SIGParser::RuleShader); + enterRule(_localctx, 108, PrismParser::RuleShader); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5408,11 +5408,11 @@ SIGParser::ShaderContext* SIGParser::shader() { setState(554); shader_type(); setState(555); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(556); shader_path(); setState(557); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -5426,54 +5426,54 @@ SIGParser::ShaderContext* SIGParser::shader() { //----------------- Compute_pso_statContext ------------------------------------------------------------------ -SIGParser::Compute_pso_statContext::Compute_pso_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Compute_pso_statContext::Compute_pso_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Root_sigContext* SIGParser::Compute_pso_statContext::root_sig() { - return getRuleContext(0); +PrismParser::Root_sigContext* PrismParser::Compute_pso_statContext::root_sig() { + return getRuleContext(0); } -SIGParser::ShaderContext* SIGParser::Compute_pso_statContext::shader() { - return getRuleContext(0); +PrismParser::ShaderContext* PrismParser::Compute_pso_statContext::shader() { + return getRuleContext(0); } -SIGParser::Define_declarationContext* SIGParser::Compute_pso_statContext::define_declaration() { - return getRuleContext(0); +PrismParser::Define_declarationContext* PrismParser::Compute_pso_statContext::define_declaration() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Compute_pso_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Compute_pso_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Compute_pso_statContext::getRuleIndex() const { - return SIGParser::RuleCompute_pso_stat; +size_t PrismParser::Compute_pso_statContext::getRuleIndex() const { + return PrismParser::RuleCompute_pso_stat; } -void SIGParser::Compute_pso_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Compute_pso_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCompute_pso_stat(this); } -void SIGParser::Compute_pso_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Compute_pso_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCompute_pso_stat(this); } -std::any SIGParser::Compute_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Compute_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCompute_pso_stat(this); else return visitor->visitChildren(this); } -SIGParser::Compute_pso_statContext* SIGParser::compute_pso_stat() { +PrismParser::Compute_pso_statContext* PrismParser::compute_pso_stat() { Compute_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, SIGParser::RuleCompute_pso_stat); + enterRule(_localctx, 110, PrismParser::RuleCompute_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5510,7 +5510,7 @@ SIGParser::Compute_pso_statContext* SIGParser::compute_pso_stat() { case 4: { enterOuterAlt(_localctx, 4); setState(562); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -5530,46 +5530,46 @@ SIGParser::Compute_pso_statContext* SIGParser::compute_pso_stat() { //----------------- Compute_pso_blockContext ------------------------------------------------------------------ -SIGParser::Compute_pso_blockContext::Compute_pso_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Compute_pso_blockContext::Compute_pso_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Compute_pso_blockContext::compute_pso_stat() { - return getRuleContexts(); +std::vector PrismParser::Compute_pso_blockContext::compute_pso_stat() { + return getRuleContexts(); } -SIGParser::Compute_pso_statContext* SIGParser::Compute_pso_blockContext::compute_pso_stat(size_t i) { - return getRuleContext(i); +PrismParser::Compute_pso_statContext* PrismParser::Compute_pso_blockContext::compute_pso_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Compute_pso_blockContext::getRuleIndex() const { - return SIGParser::RuleCompute_pso_block; +size_t PrismParser::Compute_pso_blockContext::getRuleIndex() const { + return PrismParser::RuleCompute_pso_block; } -void SIGParser::Compute_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Compute_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCompute_pso_block(this); } -void SIGParser::Compute_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Compute_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCompute_pso_block(this); } -std::any SIGParser::Compute_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Compute_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCompute_pso_block(this); else return visitor->visitChildren(this); } -SIGParser::Compute_pso_blockContext* SIGParser::compute_pso_block() { +PrismParser::Compute_pso_blockContext* PrismParser::compute_pso_block() { Compute_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, SIGParser::RuleCompute_pso_block); + enterRule(_localctx, 112, PrismParser::RuleCompute_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5606,70 +5606,70 @@ SIGParser::Compute_pso_blockContext* SIGParser::compute_pso_block() { //----------------- Compute_pso_definitionContext ------------------------------------------------------------------ -SIGParser::Compute_pso_definitionContext::Compute_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Compute_pso_definitionContext::Compute_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Compute_pso_definitionContext::COMPUTE_PSO() { - return getToken(SIGParser::COMPUTE_PSO, 0); +tree::TerminalNode* PrismParser::Compute_pso_definitionContext::COMPUTE_PSO() { + return getToken(PrismParser::COMPUTE_PSO, 0); } -SIGParser::Name_idContext* SIGParser::Compute_pso_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Compute_pso_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Compute_pso_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Compute_pso_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Compute_pso_blockContext* SIGParser::Compute_pso_definitionContext::compute_pso_block() { - return getRuleContext(0); +PrismParser::Compute_pso_blockContext* PrismParser::Compute_pso_definitionContext::compute_pso_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Compute_pso_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Compute_pso_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Compute_pso_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Compute_pso_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Compute_pso_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Compute_pso_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Compute_pso_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Compute_pso_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Compute_pso_definitionContext::getRuleIndex() const { - return SIGParser::RuleCompute_pso_definition; +size_t PrismParser::Compute_pso_definitionContext::getRuleIndex() const { + return PrismParser::RuleCompute_pso_definition; } -void SIGParser::Compute_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Compute_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterCompute_pso_definition(this); } -void SIGParser::Compute_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Compute_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitCompute_pso_definition(this); } -std::any SIGParser::Compute_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Compute_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitCompute_pso_definition(this); else return visitor->visitChildren(this); } -SIGParser::Compute_pso_definitionContext* SIGParser::compute_pso_definition() { +PrismParser::Compute_pso_definitionContext* PrismParser::compute_pso_definition() { Compute_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, SIGParser::RuleCompute_pso_definition); + enterRule(_localctx, 114, PrismParser::RuleCompute_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -5695,23 +5695,23 @@ SIGParser::Compute_pso_definitionContext* SIGParser::compute_pso_definition() { alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); } setState(577); - match(SIGParser::COMPUTE_PSO); + match(PrismParser::COMPUTE_PSO); setState(578); name_id(); setState(580); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(579); inherit(); } setState(582); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(583); compute_pso_block(); setState(584); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -5725,66 +5725,66 @@ SIGParser::Compute_pso_definitionContext* SIGParser::compute_pso_definition() { //----------------- Graphics_pso_statContext ------------------------------------------------------------------ -SIGParser::Graphics_pso_statContext::Graphics_pso_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Graphics_pso_statContext::Graphics_pso_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Root_sigContext* SIGParser::Graphics_pso_statContext::root_sig() { - return getRuleContext(0); +PrismParser::Root_sigContext* PrismParser::Graphics_pso_statContext::root_sig() { + return getRuleContext(0); } -SIGParser::ShaderContext* SIGParser::Graphics_pso_statContext::shader() { - return getRuleContext(0); +PrismParser::ShaderContext* PrismParser::Graphics_pso_statContext::shader() { + return getRuleContext(0); } -SIGParser::Define_declarationContext* SIGParser::Graphics_pso_statContext::define_declaration() { - return getRuleContext(0); +PrismParser::Define_declarationContext* PrismParser::Graphics_pso_statContext::define_declaration() { + return getRuleContext(0); } -SIGParser::Rtv_formats_declarationContext* SIGParser::Graphics_pso_statContext::rtv_formats_declaration() { - return getRuleContext(0); +PrismParser::Rtv_formats_declarationContext* PrismParser::Graphics_pso_statContext::rtv_formats_declaration() { + return getRuleContext(0); } -SIGParser::Blends_declarationContext* SIGParser::Graphics_pso_statContext::blends_declaration() { - return getRuleContext(0); +PrismParser::Blends_declarationContext* PrismParser::Graphics_pso_statContext::blends_declaration() { + return getRuleContext(0); } -SIGParser::Pso_paramContext* SIGParser::Graphics_pso_statContext::pso_param() { - return getRuleContext(0); +PrismParser::Pso_paramContext* PrismParser::Graphics_pso_statContext::pso_param() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Graphics_pso_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Graphics_pso_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Graphics_pso_statContext::getRuleIndex() const { - return SIGParser::RuleGraphics_pso_stat; +size_t PrismParser::Graphics_pso_statContext::getRuleIndex() const { + return PrismParser::RuleGraphics_pso_stat; } -void SIGParser::Graphics_pso_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Graphics_pso_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterGraphics_pso_stat(this); } -void SIGParser::Graphics_pso_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Graphics_pso_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitGraphics_pso_stat(this); } -std::any SIGParser::Graphics_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Graphics_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGraphics_pso_stat(this); else return visitor->visitChildren(this); } -SIGParser::Graphics_pso_statContext* SIGParser::graphics_pso_stat() { +PrismParser::Graphics_pso_statContext* PrismParser::graphics_pso_stat() { Graphics_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, SIGParser::RuleGraphics_pso_stat); + enterRule(_localctx, 116, PrismParser::RuleGraphics_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5842,7 +5842,7 @@ SIGParser::Graphics_pso_statContext* SIGParser::graphics_pso_stat() { case 7: { enterOuterAlt(_localctx, 7); setState(592); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -5862,46 +5862,46 @@ SIGParser::Graphics_pso_statContext* SIGParser::graphics_pso_stat() { //----------------- Graphics_pso_blockContext ------------------------------------------------------------------ -SIGParser::Graphics_pso_blockContext::Graphics_pso_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Graphics_pso_blockContext::Graphics_pso_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Graphics_pso_blockContext::graphics_pso_stat() { - return getRuleContexts(); +std::vector PrismParser::Graphics_pso_blockContext::graphics_pso_stat() { + return getRuleContexts(); } -SIGParser::Graphics_pso_statContext* SIGParser::Graphics_pso_blockContext::graphics_pso_stat(size_t i) { - return getRuleContext(i); +PrismParser::Graphics_pso_statContext* PrismParser::Graphics_pso_blockContext::graphics_pso_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Graphics_pso_blockContext::getRuleIndex() const { - return SIGParser::RuleGraphics_pso_block; +size_t PrismParser::Graphics_pso_blockContext::getRuleIndex() const { + return PrismParser::RuleGraphics_pso_block; } -void SIGParser::Graphics_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Graphics_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterGraphics_pso_block(this); } -void SIGParser::Graphics_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Graphics_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitGraphics_pso_block(this); } -std::any SIGParser::Graphics_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Graphics_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGraphics_pso_block(this); else return visitor->visitChildren(this); } -SIGParser::Graphics_pso_blockContext* SIGParser::graphics_pso_block() { +PrismParser::Graphics_pso_blockContext* PrismParser::graphics_pso_block() { Graphics_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, SIGParser::RuleGraphics_pso_block); + enterRule(_localctx, 118, PrismParser::RuleGraphics_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5938,70 +5938,70 @@ SIGParser::Graphics_pso_blockContext* SIGParser::graphics_pso_block() { //----------------- Graphics_pso_definitionContext ------------------------------------------------------------------ -SIGParser::Graphics_pso_definitionContext::Graphics_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Graphics_pso_definitionContext::Graphics_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Graphics_pso_definitionContext::GRAPHICS_PSO() { - return getToken(SIGParser::GRAPHICS_PSO, 0); +tree::TerminalNode* PrismParser::Graphics_pso_definitionContext::GRAPHICS_PSO() { + return getToken(PrismParser::GRAPHICS_PSO, 0); } -SIGParser::Name_idContext* SIGParser::Graphics_pso_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Graphics_pso_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Graphics_pso_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Graphics_pso_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Graphics_pso_blockContext* SIGParser::Graphics_pso_definitionContext::graphics_pso_block() { - return getRuleContext(0); +PrismParser::Graphics_pso_blockContext* PrismParser::Graphics_pso_definitionContext::graphics_pso_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Graphics_pso_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Graphics_pso_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Graphics_pso_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Graphics_pso_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Graphics_pso_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Graphics_pso_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Graphics_pso_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Graphics_pso_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Graphics_pso_definitionContext::getRuleIndex() const { - return SIGParser::RuleGraphics_pso_definition; +size_t PrismParser::Graphics_pso_definitionContext::getRuleIndex() const { + return PrismParser::RuleGraphics_pso_definition; } -void SIGParser::Graphics_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Graphics_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterGraphics_pso_definition(this); } -void SIGParser::Graphics_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Graphics_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitGraphics_pso_definition(this); } -std::any SIGParser::Graphics_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Graphics_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitGraphics_pso_definition(this); else return visitor->visitChildren(this); } -SIGParser::Graphics_pso_definitionContext* SIGParser::graphics_pso_definition() { +PrismParser::Graphics_pso_definitionContext* PrismParser::graphics_pso_definition() { Graphics_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, SIGParser::RuleGraphics_pso_definition); + enterRule(_localctx, 120, PrismParser::RuleGraphics_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -6027,23 +6027,23 @@ SIGParser::Graphics_pso_definitionContext* SIGParser::graphics_pso_definition() alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); } setState(607); - match(SIGParser::GRAPHICS_PSO); + match(PrismParser::GRAPHICS_PSO); setState(608); name_id(); setState(610); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(609); inherit(); } setState(612); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(613); graphics_pso_block(); setState(614); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -6057,46 +6057,46 @@ SIGParser::Graphics_pso_definitionContext* SIGParser::graphics_pso_definition() //----------------- Rtx_pso_statContext ------------------------------------------------------------------ -SIGParser::Rtx_pso_statContext::Rtx_pso_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_pso_statContext::Rtx_pso_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Root_sigContext* SIGParser::Rtx_pso_statContext::root_sig() { - return getRuleContext(0); +PrismParser::Root_sigContext* PrismParser::Rtx_pso_statContext::root_sig() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_pso_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Rtx_pso_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Rtx_pso_statContext::getRuleIndex() const { - return SIGParser::RuleRtx_pso_stat; +size_t PrismParser::Rtx_pso_statContext::getRuleIndex() const { + return PrismParser::RuleRtx_pso_stat; } -void SIGParser::Rtx_pso_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pso_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_pso_stat(this); } -void SIGParser::Rtx_pso_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pso_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_pso_stat(this); } -std::any SIGParser::Rtx_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_pso_stat(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_pso_statContext* SIGParser::rtx_pso_stat() { +PrismParser::Rtx_pso_statContext* PrismParser::rtx_pso_stat() { Rtx_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, SIGParser::RuleRtx_pso_stat); + enterRule(_localctx, 122, PrismParser::RuleRtx_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6109,17 +6109,17 @@ SIGParser::Rtx_pso_statContext* SIGParser::rtx_pso_stat() { setState(618); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::ROOTSIG: { + case PrismParser::ROOTSIG: { enterOuterAlt(_localctx, 1); setState(616); root_sig(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); setState(617); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -6139,46 +6139,46 @@ SIGParser::Rtx_pso_statContext* SIGParser::rtx_pso_stat() { //----------------- Rtx_pso_blockContext ------------------------------------------------------------------ -SIGParser::Rtx_pso_blockContext::Rtx_pso_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_pso_blockContext::Rtx_pso_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Rtx_pso_blockContext::rtx_pso_stat() { - return getRuleContexts(); +std::vector PrismParser::Rtx_pso_blockContext::rtx_pso_stat() { + return getRuleContexts(); } -SIGParser::Rtx_pso_statContext* SIGParser::Rtx_pso_blockContext::rtx_pso_stat(size_t i) { - return getRuleContext(i); +PrismParser::Rtx_pso_statContext* PrismParser::Rtx_pso_blockContext::rtx_pso_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Rtx_pso_blockContext::getRuleIndex() const { - return SIGParser::RuleRtx_pso_block; +size_t PrismParser::Rtx_pso_blockContext::getRuleIndex() const { + return PrismParser::RuleRtx_pso_block; } -void SIGParser::Rtx_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_pso_block(this); } -void SIGParser::Rtx_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_pso_block(this); } -std::any SIGParser::Rtx_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_pso_block(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_pso_blockContext* SIGParser::rtx_pso_block() { +PrismParser::Rtx_pso_blockContext* PrismParser::rtx_pso_block() { Rtx_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, SIGParser::RuleRtx_pso_block); + enterRule(_localctx, 124, PrismParser::RuleRtx_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6193,9 +6193,9 @@ SIGParser::Rtx_pso_blockContext* SIGParser::rtx_pso_block() { setState(623); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::ROOTSIG + while (_la == PrismParser::ROOTSIG - || _la == SIGParser::COMMENT) { + || _la == PrismParser::COMMENT) { setState(620); rtx_pso_stat(); setState(625); @@ -6215,62 +6215,62 @@ SIGParser::Rtx_pso_blockContext* SIGParser::rtx_pso_block() { //----------------- Rtx_pso_definitionContext ------------------------------------------------------------------ -SIGParser::Rtx_pso_definitionContext::Rtx_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_pso_definitionContext::Rtx_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Rtx_pso_definitionContext::RAYTRACE_PSO() { - return getToken(SIGParser::RAYTRACE_PSO, 0); +tree::TerminalNode* PrismParser::Rtx_pso_definitionContext::RAYTRACE_PSO() { + return getToken(PrismParser::RAYTRACE_PSO, 0); } -SIGParser::Name_idContext* SIGParser::Rtx_pso_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Rtx_pso_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_pso_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Rtx_pso_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Rtx_pso_blockContext* SIGParser::Rtx_pso_definitionContext::rtx_pso_block() { - return getRuleContext(0); +PrismParser::Rtx_pso_blockContext* PrismParser::Rtx_pso_definitionContext::rtx_pso_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_pso_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Rtx_pso_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -SIGParser::InheritContext* SIGParser::Rtx_pso_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Rtx_pso_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Rtx_pso_definitionContext::getRuleIndex() const { - return SIGParser::RuleRtx_pso_definition; +size_t PrismParser::Rtx_pso_definitionContext::getRuleIndex() const { + return PrismParser::RuleRtx_pso_definition; } -void SIGParser::Rtx_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_pso_definition(this); } -void SIGParser::Rtx_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_pso_definition(this); } -std::any SIGParser::Rtx_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_pso_definition(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_pso_definitionContext* SIGParser::rtx_pso_definition() { +PrismParser::Rtx_pso_definitionContext* PrismParser::rtx_pso_definition() { Rtx_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, SIGParser::RuleRtx_pso_definition); + enterRule(_localctx, 126, PrismParser::RuleRtx_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -6283,23 +6283,23 @@ SIGParser::Rtx_pso_definitionContext* SIGParser::rtx_pso_definition() { try { enterOuterAlt(_localctx, 1); setState(626); - match(SIGParser::RAYTRACE_PSO); + match(PrismParser::RAYTRACE_PSO); setState(627); name_id(); setState(629); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(628); inherit(); } setState(631); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(632); rtx_pso_block(); setState(633); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -6313,38 +6313,38 @@ SIGParser::Rtx_pso_definitionContext* SIGParser::rtx_pso_definition() { //----------------- Node_param_idContext ------------------------------------------------------------------ -SIGParser::Node_param_idContext::Node_param_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Node_param_idContext::Node_param_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -size_t SIGParser::Node_param_idContext::getRuleIndex() const { - return SIGParser::RuleNode_param_id; +size_t PrismParser::Node_param_idContext::getRuleIndex() const { + return PrismParser::RuleNode_param_id; } -void SIGParser::Node_param_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_param_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNode_param_id(this); } -void SIGParser::Node_param_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_param_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNode_param_id(this); } -std::any SIGParser::Node_param_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Node_param_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNode_param_id(this); else return visitor->visitChildren(this); } -SIGParser::Node_param_idContext* SIGParser::node_param_id() { +PrismParser::Node_param_idContext* PrismParser::node_param_id() { Node_param_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, SIGParser::RuleNode_param_id); + enterRule(_localctx, 128, PrismParser::RuleNode_param_id); size_t _la = 0; #if __cplusplus > 201703L @@ -6379,54 +6379,54 @@ SIGParser::Node_param_idContext* SIGParser::node_param_id() { //----------------- Node_paramContext ------------------------------------------------------------------ -SIGParser::Node_paramContext::Node_paramContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Node_paramContext::Node_paramContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Node_param_idContext* SIGParser::Node_paramContext::node_param_id() { - return getRuleContext(0); +PrismParser::Node_param_idContext* PrismParser::Node_paramContext::node_param_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Node_paramContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Node_paramContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Value_idContext* SIGParser::Node_paramContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Node_paramContext::value_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Node_paramContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Node_paramContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -size_t SIGParser::Node_paramContext::getRuleIndex() const { - return SIGParser::RuleNode_param; +size_t PrismParser::Node_paramContext::getRuleIndex() const { + return PrismParser::RuleNode_param; } -void SIGParser::Node_paramContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_paramContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNode_param(this); } -void SIGParser::Node_paramContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_paramContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNode_param(this); } -std::any SIGParser::Node_paramContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Node_paramContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNode_param(this); else return visitor->visitChildren(this); } -SIGParser::Node_paramContext* SIGParser::node_param() { +PrismParser::Node_paramContext* PrismParser::node_param() { Node_paramContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, SIGParser::RuleNode_param); + enterRule(_localctx, 130, PrismParser::RuleNode_param); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6440,11 +6440,11 @@ SIGParser::Node_paramContext* SIGParser::node_param() { setState(637); node_param_id(); setState(638); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(639); value_id(); setState(640); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -6458,62 +6458,62 @@ SIGParser::Node_paramContext* SIGParser::node_param() { //----------------- Node_output_declContext ------------------------------------------------------------------ -SIGParser::Node_output_declContext::Node_output_declContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Node_output_declContext::Node_output_declContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Node_output_declContext::NODE_OUTPUT() { - return getToken(SIGParser::NODE_OUTPUT, 0); +tree::TerminalNode* PrismParser::Node_output_declContext::NODE_OUTPUT() { + return getToken(PrismParser::NODE_OUTPUT, 0); } -SIGParser::Type_idContext* SIGParser::Node_output_declContext::type_id() { - return getRuleContext(0); +PrismParser::Type_idContext* PrismParser::Node_output_declContext::type_id() { + return getRuleContext(0); } -SIGParser::Name_idContext* SIGParser::Node_output_declContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Node_output_declContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Node_output_declContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Node_output_declContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Node_output_declContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Node_output_declContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Node_output_declContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Node_output_declContext::option_block(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Node_output_declContext::getRuleIndex() const { - return SIGParser::RuleNode_output_decl; +size_t PrismParser::Node_output_declContext::getRuleIndex() const { + return PrismParser::RuleNode_output_decl; } -void SIGParser::Node_output_declContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_output_declContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNode_output_decl(this); } -void SIGParser::Node_output_declContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_output_declContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNode_output_decl(this); } -std::any SIGParser::Node_output_declContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Node_output_declContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNode_output_decl(this); else return visitor->visitChildren(this); } -SIGParser::Node_output_declContext* SIGParser::node_output_decl() { +PrismParser::Node_output_declContext* PrismParser::node_output_decl() { Node_output_declContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, SIGParser::RuleNode_output_decl); + enterRule(_localctx, 132, PrismParser::RuleNode_output_decl); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6538,13 +6538,13 @@ SIGParser::Node_output_declContext* SIGParser::node_output_decl() { alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); } setState(648); - match(SIGParser::NODE_OUTPUT); + match(PrismParser::NODE_OUTPUT); setState(649); type_id(); setState(650); name_id(); setState(651); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -6558,50 +6558,50 @@ SIGParser::Node_output_declContext* SIGParser::node_output_decl() { //----------------- Node_statContext ------------------------------------------------------------------ -SIGParser::Node_statContext::Node_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Node_statContext::Node_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Node_paramContext* SIGParser::Node_statContext::node_param() { - return getRuleContext(0); +PrismParser::Node_paramContext* PrismParser::Node_statContext::node_param() { + return getRuleContext(0); } -SIGParser::Node_output_declContext* SIGParser::Node_statContext::node_output_decl() { - return getRuleContext(0); +PrismParser::Node_output_declContext* PrismParser::Node_statContext::node_output_decl() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Node_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Node_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Node_statContext::getRuleIndex() const { - return SIGParser::RuleNode_stat; +size_t PrismParser::Node_statContext::getRuleIndex() const { + return PrismParser::RuleNode_stat; } -void SIGParser::Node_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNode_stat(this); } -void SIGParser::Node_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNode_stat(this); } -std::any SIGParser::Node_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Node_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNode_stat(this); else return visitor->visitChildren(this); } -SIGParser::Node_statContext* SIGParser::node_stat() { +PrismParser::Node_statContext* PrismParser::node_stat() { Node_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, SIGParser::RuleNode_stat); + enterRule(_localctx, 134, PrismParser::RuleNode_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6614,29 +6614,29 @@ SIGParser::Node_statContext* SIGParser::node_stat() { setState(656); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::T__7: - case SIGParser::T__8: - case SIGParser::T__9: - case SIGParser::T__10: - case SIGParser::T__11: { + case PrismParser::T__7: + case PrismParser::T__8: + case PrismParser::T__9: + case PrismParser::T__10: + case PrismParser::T__11: { enterOuterAlt(_localctx, 1); setState(653); node_param(); break; } - case SIGParser::OSBRACE: - case SIGParser::NODE_OUTPUT: { + case PrismParser::OSBRACE: + case PrismParser::NODE_OUTPUT: { enterOuterAlt(_localctx, 2); setState(654); node_output_decl(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 3); setState(655); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -6656,46 +6656,46 @@ SIGParser::Node_statContext* SIGParser::node_stat() { //----------------- Node_blockContext ------------------------------------------------------------------ -SIGParser::Node_blockContext::Node_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Node_blockContext::Node_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Node_blockContext::node_stat() { - return getRuleContexts(); +std::vector PrismParser::Node_blockContext::node_stat() { + return getRuleContexts(); } -SIGParser::Node_statContext* SIGParser::Node_blockContext::node_stat(size_t i) { - return getRuleContext(i); +PrismParser::Node_statContext* PrismParser::Node_blockContext::node_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Node_blockContext::getRuleIndex() const { - return SIGParser::RuleNode_block; +size_t PrismParser::Node_blockContext::getRuleIndex() const { + return PrismParser::RuleNode_block; } -void SIGParser::Node_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNode_block(this); } -void SIGParser::Node_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNode_block(this); } -std::any SIGParser::Node_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Node_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNode_block(this); else return visitor->visitChildren(this); } -SIGParser::Node_blockContext* SIGParser::node_block() { +PrismParser::Node_blockContext* PrismParser::node_block() { Node_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, SIGParser::RuleNode_block); + enterRule(_localctx, 136, PrismParser::RuleNode_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6732,58 +6732,58 @@ SIGParser::Node_blockContext* SIGParser::node_block() { //----------------- Node_definitionContext ------------------------------------------------------------------ -SIGParser::Node_definitionContext::Node_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Node_definitionContext::Node_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Node_definitionContext::NODE() { - return getToken(SIGParser::NODE, 0); +tree::TerminalNode* PrismParser::Node_definitionContext::NODE() { + return getToken(PrismParser::NODE, 0); } -SIGParser::Name_idContext* SIGParser::Node_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Node_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Node_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Node_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Node_blockContext* SIGParser::Node_definitionContext::node_block() { - return getRuleContext(0); +PrismParser::Node_blockContext* PrismParser::Node_definitionContext::node_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Node_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Node_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -size_t SIGParser::Node_definitionContext::getRuleIndex() const { - return SIGParser::RuleNode_definition; +size_t PrismParser::Node_definitionContext::getRuleIndex() const { + return PrismParser::RuleNode_definition; } -void SIGParser::Node_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterNode_definition(this); } -void SIGParser::Node_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Node_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitNode_definition(this); } -std::any SIGParser::Node_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Node_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitNode_definition(this); else return visitor->visitChildren(this); } -SIGParser::Node_definitionContext* SIGParser::node_definition() { +PrismParser::Node_definitionContext* PrismParser::node_definition() { Node_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, SIGParser::RuleNode_definition); + enterRule(_localctx, 138, PrismParser::RuleNode_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6795,15 +6795,15 @@ SIGParser::Node_definitionContext* SIGParser::node_definition() { try { enterOuterAlt(_localctx, 1); setState(664); - match(SIGParser::NODE); + match(PrismParser::NODE); setState(665); name_id(); setState(666); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(667); node_block(); setState(668); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -6817,58 +6817,58 @@ SIGParser::Node_definitionContext* SIGParser::node_definition() { //----------------- Workgraph_pso_statContext ------------------------------------------------------------------ -SIGParser::Workgraph_pso_statContext::Workgraph_pso_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Workgraph_pso_statContext::Workgraph_pso_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Root_sigContext* SIGParser::Workgraph_pso_statContext::root_sig() { - return getRuleContext(0); +PrismParser::Root_sigContext* PrismParser::Workgraph_pso_statContext::root_sig() { + return getRuleContext(0); } -SIGParser::ShaderContext* SIGParser::Workgraph_pso_statContext::shader() { - return getRuleContext(0); +PrismParser::ShaderContext* PrismParser::Workgraph_pso_statContext::shader() { + return getRuleContext(0); } -SIGParser::Define_declarationContext* SIGParser::Workgraph_pso_statContext::define_declaration() { - return getRuleContext(0); +PrismParser::Define_declarationContext* PrismParser::Workgraph_pso_statContext::define_declaration() { + return getRuleContext(0); } -SIGParser::Node_definitionContext* SIGParser::Workgraph_pso_statContext::node_definition() { - return getRuleContext(0); +PrismParser::Node_definitionContext* PrismParser::Workgraph_pso_statContext::node_definition() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Workgraph_pso_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Workgraph_pso_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Workgraph_pso_statContext::getRuleIndex() const { - return SIGParser::RuleWorkgraph_pso_stat; +size_t PrismParser::Workgraph_pso_statContext::getRuleIndex() const { + return PrismParser::RuleWorkgraph_pso_stat; } -void SIGParser::Workgraph_pso_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Workgraph_pso_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterWorkgraph_pso_stat(this); } -void SIGParser::Workgraph_pso_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Workgraph_pso_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitWorkgraph_pso_stat(this); } -std::any SIGParser::Workgraph_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Workgraph_pso_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitWorkgraph_pso_stat(this); else return visitor->visitChildren(this); } -SIGParser::Workgraph_pso_statContext* SIGParser::workgraph_pso_stat() { +PrismParser::Workgraph_pso_statContext* PrismParser::workgraph_pso_stat() { Workgraph_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, SIGParser::RuleWorkgraph_pso_stat); + enterRule(_localctx, 140, PrismParser::RuleWorkgraph_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6912,7 +6912,7 @@ SIGParser::Workgraph_pso_statContext* SIGParser::workgraph_pso_stat() { case 5: { enterOuterAlt(_localctx, 5); setState(674); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -6932,46 +6932,46 @@ SIGParser::Workgraph_pso_statContext* SIGParser::workgraph_pso_stat() { //----------------- Workgraph_pso_blockContext ------------------------------------------------------------------ -SIGParser::Workgraph_pso_blockContext::Workgraph_pso_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Workgraph_pso_blockContext::Workgraph_pso_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Workgraph_pso_blockContext::workgraph_pso_stat() { - return getRuleContexts(); +std::vector PrismParser::Workgraph_pso_blockContext::workgraph_pso_stat() { + return getRuleContexts(); } -SIGParser::Workgraph_pso_statContext* SIGParser::Workgraph_pso_blockContext::workgraph_pso_stat(size_t i) { - return getRuleContext(i); +PrismParser::Workgraph_pso_statContext* PrismParser::Workgraph_pso_blockContext::workgraph_pso_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Workgraph_pso_blockContext::getRuleIndex() const { - return SIGParser::RuleWorkgraph_pso_block; +size_t PrismParser::Workgraph_pso_blockContext::getRuleIndex() const { + return PrismParser::RuleWorkgraph_pso_block; } -void SIGParser::Workgraph_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Workgraph_pso_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterWorkgraph_pso_block(this); } -void SIGParser::Workgraph_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Workgraph_pso_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitWorkgraph_pso_block(this); } -std::any SIGParser::Workgraph_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Workgraph_pso_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitWorkgraph_pso_block(this); else return visitor->visitChildren(this); } -SIGParser::Workgraph_pso_blockContext* SIGParser::workgraph_pso_block() { +PrismParser::Workgraph_pso_blockContext* PrismParser::workgraph_pso_block() { Workgraph_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, SIGParser::RuleWorkgraph_pso_block); + enterRule(_localctx, 142, PrismParser::RuleWorkgraph_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7008,70 +7008,70 @@ SIGParser::Workgraph_pso_blockContext* SIGParser::workgraph_pso_block() { //----------------- Workgraph_pso_definitionContext ------------------------------------------------------------------ -SIGParser::Workgraph_pso_definitionContext::Workgraph_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Workgraph_pso_definitionContext::Workgraph_pso_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Workgraph_pso_definitionContext::WORKGRAPH_PSO() { - return getToken(SIGParser::WORKGRAPH_PSO, 0); +tree::TerminalNode* PrismParser::Workgraph_pso_definitionContext::WORKGRAPH_PSO() { + return getToken(PrismParser::WORKGRAPH_PSO, 0); } -SIGParser::Name_idContext* SIGParser::Workgraph_pso_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Workgraph_pso_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Workgraph_pso_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Workgraph_pso_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Workgraph_pso_blockContext* SIGParser::Workgraph_pso_definitionContext::workgraph_pso_block() { - return getRuleContext(0); +PrismParser::Workgraph_pso_blockContext* PrismParser::Workgraph_pso_definitionContext::workgraph_pso_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Workgraph_pso_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Workgraph_pso_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Workgraph_pso_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Workgraph_pso_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Workgraph_pso_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Workgraph_pso_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Workgraph_pso_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Workgraph_pso_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Workgraph_pso_definitionContext::getRuleIndex() const { - return SIGParser::RuleWorkgraph_pso_definition; +size_t PrismParser::Workgraph_pso_definitionContext::getRuleIndex() const { + return PrismParser::RuleWorkgraph_pso_definition; } -void SIGParser::Workgraph_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Workgraph_pso_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterWorkgraph_pso_definition(this); } -void SIGParser::Workgraph_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Workgraph_pso_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitWorkgraph_pso_definition(this); } -std::any SIGParser::Workgraph_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Workgraph_pso_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitWorkgraph_pso_definition(this); else return visitor->visitChildren(this); } -SIGParser::Workgraph_pso_definitionContext* SIGParser::workgraph_pso_definition() { +PrismParser::Workgraph_pso_definitionContext* PrismParser::workgraph_pso_definition() { Workgraph_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, SIGParser::RuleWorkgraph_pso_definition); + enterRule(_localctx, 144, PrismParser::RuleWorkgraph_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7097,23 +7097,23 @@ SIGParser::Workgraph_pso_definitionContext* SIGParser::workgraph_pso_definition( alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); } setState(689); - match(SIGParser::WORKGRAPH_PSO); + match(PrismParser::WORKGRAPH_PSO); setState(690); name_id(); setState(692); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(691); inherit(); } setState(694); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(695); workgraph_pso_block(); setState(696); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -7127,50 +7127,50 @@ SIGParser::Workgraph_pso_definitionContext* SIGParser::workgraph_pso_definition( //----------------- Rtx_pass_statContext ------------------------------------------------------------------ -SIGParser::Rtx_pass_statContext::Rtx_pass_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_pass_statContext::Rtx_pass_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::ShaderContext* SIGParser::Rtx_pass_statContext::shader() { - return getRuleContext(0); +PrismParser::ShaderContext* PrismParser::Rtx_pass_statContext::shader() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_pass_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Rtx_pass_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -SIGParser::Pso_paramContext* SIGParser::Rtx_pass_statContext::pso_param() { - return getRuleContext(0); +PrismParser::Pso_paramContext* PrismParser::Rtx_pass_statContext::pso_param() { + return getRuleContext(0); } -size_t SIGParser::Rtx_pass_statContext::getRuleIndex() const { - return SIGParser::RuleRtx_pass_stat; +size_t PrismParser::Rtx_pass_statContext::getRuleIndex() const { + return PrismParser::RuleRtx_pass_stat; } -void SIGParser::Rtx_pass_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pass_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_pass_stat(this); } -void SIGParser::Rtx_pass_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pass_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_pass_stat(this); } -std::any SIGParser::Rtx_pass_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_pass_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_pass_stat(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_pass_statContext* SIGParser::rtx_pass_stat() { +PrismParser::Rtx_pass_statContext* PrismParser::rtx_pass_stat() { Rtx_pass_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, SIGParser::RuleRtx_pass_stat); + enterRule(_localctx, 146, PrismParser::RuleRtx_pass_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7193,7 +7193,7 @@ SIGParser::Rtx_pass_statContext* SIGParser::rtx_pass_stat() { case 2: { enterOuterAlt(_localctx, 2); setState(699); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -7220,46 +7220,46 @@ SIGParser::Rtx_pass_statContext* SIGParser::rtx_pass_stat() { //----------------- Rtx_pass_blockContext ------------------------------------------------------------------ -SIGParser::Rtx_pass_blockContext::Rtx_pass_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_pass_blockContext::Rtx_pass_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Rtx_pass_blockContext::rtx_pass_stat() { - return getRuleContexts(); +std::vector PrismParser::Rtx_pass_blockContext::rtx_pass_stat() { + return getRuleContexts(); } -SIGParser::Rtx_pass_statContext* SIGParser::Rtx_pass_blockContext::rtx_pass_stat(size_t i) { - return getRuleContext(i); +PrismParser::Rtx_pass_statContext* PrismParser::Rtx_pass_blockContext::rtx_pass_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Rtx_pass_blockContext::getRuleIndex() const { - return SIGParser::RuleRtx_pass_block; +size_t PrismParser::Rtx_pass_blockContext::getRuleIndex() const { + return PrismParser::RuleRtx_pass_block; } -void SIGParser::Rtx_pass_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pass_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_pass_block(this); } -void SIGParser::Rtx_pass_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pass_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_pass_block(this); } -std::any SIGParser::Rtx_pass_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_pass_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_pass_block(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_pass_blockContext* SIGParser::rtx_pass_block() { +PrismParser::Rtx_pass_blockContext* PrismParser::rtx_pass_block() { Rtx_pass_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, SIGParser::RuleRtx_pass_block); + enterRule(_localctx, 148, PrismParser::RuleRtx_pass_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7275,9 +7275,9 @@ SIGParser::Rtx_pass_blockContext* SIGParser::rtx_pass_block() { _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 35184372080640) != 0 || _la == SIGParser::OSBRACE + ((1ULL << _la) & 35184372080640) != 0 || _la == PrismParser::OSBRACE - || _la == SIGParser::COMMENT) { + || _la == PrismParser::COMMENT) { setState(703); rtx_pass_stat(); setState(708); @@ -7297,70 +7297,70 @@ SIGParser::Rtx_pass_blockContext* SIGParser::rtx_pass_block() { //----------------- Rtx_pass_definitionContext ------------------------------------------------------------------ -SIGParser::Rtx_pass_definitionContext::Rtx_pass_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_pass_definitionContext::Rtx_pass_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Rtx_pass_definitionContext::RAYTRACE_PASS() { - return getToken(SIGParser::RAYTRACE_PASS, 0); +tree::TerminalNode* PrismParser::Rtx_pass_definitionContext::RAYTRACE_PASS() { + return getToken(PrismParser::RAYTRACE_PASS, 0); } -SIGParser::Name_idContext* SIGParser::Rtx_pass_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Rtx_pass_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_pass_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Rtx_pass_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Rtx_pass_blockContext* SIGParser::Rtx_pass_definitionContext::rtx_pass_block() { - return getRuleContext(0); +PrismParser::Rtx_pass_blockContext* PrismParser::Rtx_pass_definitionContext::rtx_pass_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_pass_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Rtx_pass_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Rtx_pass_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Rtx_pass_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Rtx_pass_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Rtx_pass_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Rtx_pass_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Rtx_pass_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Rtx_pass_definitionContext::getRuleIndex() const { - return SIGParser::RuleRtx_pass_definition; +size_t PrismParser::Rtx_pass_definitionContext::getRuleIndex() const { + return PrismParser::RuleRtx_pass_definition; } -void SIGParser::Rtx_pass_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pass_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_pass_definition(this); } -void SIGParser::Rtx_pass_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_pass_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_pass_definition(this); } -std::any SIGParser::Rtx_pass_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_pass_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_pass_definition(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_pass_definitionContext* SIGParser::rtx_pass_definition() { +PrismParser::Rtx_pass_definitionContext* PrismParser::rtx_pass_definition() { Rtx_pass_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, SIGParser::RuleRtx_pass_definition); + enterRule(_localctx, 150, PrismParser::RuleRtx_pass_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7386,23 +7386,23 @@ SIGParser::Rtx_pass_definitionContext* SIGParser::rtx_pass_definition() { alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); } setState(715); - match(SIGParser::RAYTRACE_PASS); + match(PrismParser::RAYTRACE_PASS); setState(716); name_id(); setState(718); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(717); inherit(); } setState(720); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(721); rtx_pass_block(); setState(722); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -7416,46 +7416,46 @@ SIGParser::Rtx_pass_definitionContext* SIGParser::rtx_pass_definition() { //----------------- Rtx_raygen_statContext ------------------------------------------------------------------ -SIGParser::Rtx_raygen_statContext::Rtx_raygen_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_raygen_statContext::Rtx_raygen_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::ShaderContext* SIGParser::Rtx_raygen_statContext::shader() { - return getRuleContext(0); +PrismParser::ShaderContext* PrismParser::Rtx_raygen_statContext::shader() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_raygen_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Rtx_raygen_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Rtx_raygen_statContext::getRuleIndex() const { - return SIGParser::RuleRtx_raygen_stat; +size_t PrismParser::Rtx_raygen_statContext::getRuleIndex() const { + return PrismParser::RuleRtx_raygen_stat; } -void SIGParser::Rtx_raygen_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_raygen_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_raygen_stat(this); } -void SIGParser::Rtx_raygen_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_raygen_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_raygen_stat(this); } -std::any SIGParser::Rtx_raygen_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_raygen_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_raygen_stat(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { +PrismParser::Rtx_raygen_statContext* PrismParser::rtx_raygen_stat() { Rtx_raygen_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, SIGParser::RuleRtx_raygen_stat); + enterRule(_localctx, 152, PrismParser::RuleRtx_raygen_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7468,30 +7468,30 @@ SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { setState(726); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::T__12: - case SIGParser::T__13: - case SIGParser::T__14: - case SIGParser::T__15: - case SIGParser::T__16: - case SIGParser::T__17: - case SIGParser::T__18: - case SIGParser::T__19: - case SIGParser::T__20: - case SIGParser::T__21: - case SIGParser::T__22: - case SIGParser::T__23: - case SIGParser::T__24: - case SIGParser::OSBRACE: { + case PrismParser::T__12: + case PrismParser::T__13: + case PrismParser::T__14: + case PrismParser::T__15: + case PrismParser::T__16: + case PrismParser::T__17: + case PrismParser::T__18: + case PrismParser::T__19: + case PrismParser::T__20: + case PrismParser::T__21: + case PrismParser::T__22: + case PrismParser::T__23: + case PrismParser::T__24: + case PrismParser::OSBRACE: { enterOuterAlt(_localctx, 1); setState(724); shader(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); setState(725); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -7511,46 +7511,46 @@ SIGParser::Rtx_raygen_statContext* SIGParser::rtx_raygen_stat() { //----------------- Rtx_raygen_blockContext ------------------------------------------------------------------ -SIGParser::Rtx_raygen_blockContext::Rtx_raygen_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_raygen_blockContext::Rtx_raygen_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Rtx_raygen_blockContext::rtx_raygen_stat() { - return getRuleContexts(); +std::vector PrismParser::Rtx_raygen_blockContext::rtx_raygen_stat() { + return getRuleContexts(); } -SIGParser::Rtx_raygen_statContext* SIGParser::Rtx_raygen_blockContext::rtx_raygen_stat(size_t i) { - return getRuleContext(i); +PrismParser::Rtx_raygen_statContext* PrismParser::Rtx_raygen_blockContext::rtx_raygen_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Rtx_raygen_blockContext::getRuleIndex() const { - return SIGParser::RuleRtx_raygen_block; +size_t PrismParser::Rtx_raygen_blockContext::getRuleIndex() const { + return PrismParser::RuleRtx_raygen_block; } -void SIGParser::Rtx_raygen_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_raygen_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_raygen_block(this); } -void SIGParser::Rtx_raygen_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_raygen_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_raygen_block(this); } -std::any SIGParser::Rtx_raygen_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_raygen_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_raygen_block(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_raygen_blockContext* SIGParser::rtx_raygen_block() { +PrismParser::Rtx_raygen_blockContext* PrismParser::rtx_raygen_block() { Rtx_raygen_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, SIGParser::RuleRtx_raygen_block); + enterRule(_localctx, 154, PrismParser::RuleRtx_raygen_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7566,9 +7566,9 @@ SIGParser::Rtx_raygen_blockContext* SIGParser::rtx_raygen_block() { _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 67100672) != 0 || _la == SIGParser::OSBRACE + ((1ULL << _la) & 67100672) != 0 || _la == PrismParser::OSBRACE - || _la == SIGParser::COMMENT) { + || _la == PrismParser::COMMENT) { setState(728); rtx_raygen_stat(); setState(733); @@ -7588,70 +7588,70 @@ SIGParser::Rtx_raygen_blockContext* SIGParser::rtx_raygen_block() { //----------------- Rtx_raygen_definitionContext ------------------------------------------------------------------ -SIGParser::Rtx_raygen_definitionContext::Rtx_raygen_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Rtx_raygen_definitionContext::Rtx_raygen_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Rtx_raygen_definitionContext::RAYTRACE_RAYGEN() { - return getToken(SIGParser::RAYTRACE_RAYGEN, 0); +tree::TerminalNode* PrismParser::Rtx_raygen_definitionContext::RAYTRACE_RAYGEN() { + return getToken(PrismParser::RAYTRACE_RAYGEN, 0); } -SIGParser::Name_idContext* SIGParser::Rtx_raygen_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Rtx_raygen_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_raygen_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Rtx_raygen_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Rtx_raygen_blockContext* SIGParser::Rtx_raygen_definitionContext::rtx_raygen_block() { - return getRuleContext(0); +PrismParser::Rtx_raygen_blockContext* PrismParser::Rtx_raygen_definitionContext::rtx_raygen_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Rtx_raygen_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Rtx_raygen_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Rtx_raygen_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Rtx_raygen_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Rtx_raygen_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Rtx_raygen_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Rtx_raygen_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Rtx_raygen_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Rtx_raygen_definitionContext::getRuleIndex() const { - return SIGParser::RuleRtx_raygen_definition; +size_t PrismParser::Rtx_raygen_definitionContext::getRuleIndex() const { + return PrismParser::RuleRtx_raygen_definition; } -void SIGParser::Rtx_raygen_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_raygen_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterRtx_raygen_definition(this); } -void SIGParser::Rtx_raygen_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Rtx_raygen_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitRtx_raygen_definition(this); } -std::any SIGParser::Rtx_raygen_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Rtx_raygen_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitRtx_raygen_definition(this); else return visitor->visitChildren(this); } -SIGParser::Rtx_raygen_definitionContext* SIGParser::rtx_raygen_definition() { +PrismParser::Rtx_raygen_definitionContext* PrismParser::rtx_raygen_definition() { Rtx_raygen_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, SIGParser::RuleRtx_raygen_definition); + enterRule(_localctx, 156, PrismParser::RuleRtx_raygen_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7677,23 +7677,23 @@ SIGParser::Rtx_raygen_definitionContext* SIGParser::rtx_raygen_definition() { alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); } setState(740); - match(SIGParser::RAYTRACE_RAYGEN); + match(PrismParser::RAYTRACE_RAYGEN); setState(741); name_id(); setState(743); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(742); inherit(); } setState(745); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(746); rtx_raygen_block(); setState(747); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -7707,58 +7707,58 @@ SIGParser::Rtx_raygen_definitionContext* SIGParser::rtx_raygen_definition() { //----------------- View_declarationContext ------------------------------------------------------------------ -SIGParser::View_declarationContext::View_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::View_declarationContext::View_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Type_idContext* SIGParser::View_declarationContext::type_id() { - return getRuleContext(0); +PrismParser::Type_idContext* PrismParser::View_declarationContext::type_id() { + return getRuleContext(0); } -SIGParser::Name_idContext* SIGParser::View_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::View_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::View_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::View_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::View_declarationContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::View_declarationContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::View_declarationContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::View_declarationContext::option_block(size_t i) { + return getRuleContext(i); } -size_t SIGParser::View_declarationContext::getRuleIndex() const { - return SIGParser::RuleView_declaration; +size_t PrismParser::View_declarationContext::getRuleIndex() const { + return PrismParser::RuleView_declaration; } -void SIGParser::View_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterView_declaration(this); } -void SIGParser::View_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitView_declaration(this); } -std::any SIGParser::View_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::View_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitView_declaration(this); else return visitor->visitChildren(this); } -SIGParser::View_declarationContext* SIGParser::view_declaration() { +PrismParser::View_declarationContext* PrismParser::view_declaration() { View_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, SIGParser::RuleView_declaration); + enterRule(_localctx, 158, PrismParser::RuleView_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7787,7 +7787,7 @@ SIGParser::View_declarationContext* SIGParser::view_declaration() { setState(756); name_id(); setState(757); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -7801,46 +7801,46 @@ SIGParser::View_declarationContext* SIGParser::view_declaration() { //----------------- View_statContext ------------------------------------------------------------------ -SIGParser::View_statContext::View_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::View_statContext::View_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::View_declarationContext* SIGParser::View_statContext::view_declaration() { - return getRuleContext(0); +PrismParser::View_declarationContext* PrismParser::View_statContext::view_declaration() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::View_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::View_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::View_statContext::getRuleIndex() const { - return SIGParser::RuleView_stat; +size_t PrismParser::View_statContext::getRuleIndex() const { + return PrismParser::RuleView_stat; } -void SIGParser::View_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterView_stat(this); } -void SIGParser::View_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitView_stat(this); } -std::any SIGParser::View_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::View_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitView_stat(this); else return visitor->visitChildren(this); } -SIGParser::View_statContext* SIGParser::view_stat() { +PrismParser::View_statContext* PrismParser::view_stat() { View_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, SIGParser::RuleView_stat); + enterRule(_localctx, 160, PrismParser::RuleView_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7853,18 +7853,18 @@ SIGParser::View_statContext* SIGParser::view_stat() { setState(761); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::OSBRACE: - case SIGParser::ID: { + case PrismParser::OSBRACE: + case PrismParser::ID: { enterOuterAlt(_localctx, 1); setState(759); view_declaration(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); setState(760); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -7884,46 +7884,46 @@ SIGParser::View_statContext* SIGParser::view_stat() { //----------------- View_blockContext ------------------------------------------------------------------ -SIGParser::View_blockContext::View_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::View_blockContext::View_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::View_blockContext::view_stat() { - return getRuleContexts(); +std::vector PrismParser::View_blockContext::view_stat() { + return getRuleContexts(); } -SIGParser::View_statContext* SIGParser::View_blockContext::view_stat(size_t i) { - return getRuleContext(i); +PrismParser::View_statContext* PrismParser::View_blockContext::view_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::View_blockContext::getRuleIndex() const { - return SIGParser::RuleView_block; +size_t PrismParser::View_blockContext::getRuleIndex() const { + return PrismParser::RuleView_block; } -void SIGParser::View_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterView_block(this); } -void SIGParser::View_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitView_block(this); } -std::any SIGParser::View_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::View_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitView_block(this); else return visitor->visitChildren(this); } -SIGParser::View_blockContext* SIGParser::view_block() { +PrismParser::View_blockContext* PrismParser::view_block() { View_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, SIGParser::RuleView_block); + enterRule(_localctx, 162, PrismParser::RuleView_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7959,70 +7959,70 @@ SIGParser::View_blockContext* SIGParser::view_block() { //----------------- View_definitionContext ------------------------------------------------------------------ -SIGParser::View_definitionContext::View_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::View_definitionContext::View_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::View_definitionContext::VIEW() { - return getToken(SIGParser::VIEW, 0); +tree::TerminalNode* PrismParser::View_definitionContext::VIEW() { + return getToken(PrismParser::VIEW, 0); } -SIGParser::Name_idContext* SIGParser::View_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::View_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::View_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::View_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::View_blockContext* SIGParser::View_definitionContext::view_block() { - return getRuleContext(0); +PrismParser::View_blockContext* PrismParser::View_definitionContext::view_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::View_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::View_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::View_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::View_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::View_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::View_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::View_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::View_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::View_definitionContext::getRuleIndex() const { - return SIGParser::RuleView_definition; +size_t PrismParser::View_definitionContext::getRuleIndex() const { + return PrismParser::RuleView_definition; } -void SIGParser::View_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterView_definition(this); } -void SIGParser::View_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::View_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitView_definition(this); } -std::any SIGParser::View_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::View_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitView_definition(this); else return visitor->visitChildren(this); } -SIGParser::View_definitionContext* SIGParser::view_definition() { +PrismParser::View_definitionContext* PrismParser::view_definition() { View_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, SIGParser::RuleView_definition); + enterRule(_localctx, 164, PrismParser::RuleView_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -8048,23 +8048,23 @@ SIGParser::View_definitionContext* SIGParser::view_definition() { alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); } setState(775); - match(SIGParser::VIEW); + match(PrismParser::VIEW); setState(776); name_id(); setState(778); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(777); inherit(); } setState(780); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(781); view_block(); setState(782); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -8078,70 +8078,70 @@ SIGParser::View_definitionContext* SIGParser::view_definition() { //----------------- Pass_definitionContext ------------------------------------------------------------------ -SIGParser::Pass_definitionContext::Pass_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Pass_definitionContext::Pass_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Pass_definitionContext::PASS() { - return getToken(SIGParser::PASS, 0); +tree::TerminalNode* PrismParser::Pass_definitionContext::PASS() { + return getToken(PrismParser::PASS, 0); } -SIGParser::Name_idContext* SIGParser::Pass_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Pass_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pass_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Pass_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::View_blockContext* SIGParser::Pass_definitionContext::view_block() { - return getRuleContext(0); +PrismParser::View_blockContext* PrismParser::Pass_definitionContext::view_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pass_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Pass_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -std::vector SIGParser::Pass_definitionContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Pass_definitionContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Pass_definitionContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Pass_definitionContext::option_block(size_t i) { + return getRuleContext(i); } -SIGParser::InheritContext* SIGParser::Pass_definitionContext::inherit() { - return getRuleContext(0); +PrismParser::InheritContext* PrismParser::Pass_definitionContext::inherit() { + return getRuleContext(0); } -size_t SIGParser::Pass_definitionContext::getRuleIndex() const { - return SIGParser::RulePass_definition; +size_t PrismParser::Pass_definitionContext::getRuleIndex() const { + return PrismParser::RulePass_definition; } -void SIGParser::Pass_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pass_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPass_definition(this); } -void SIGParser::Pass_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pass_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPass_definition(this); } -std::any SIGParser::Pass_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Pass_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPass_definition(this); else return visitor->visitChildren(this); } -SIGParser::Pass_definitionContext* SIGParser::pass_definition() { +PrismParser::Pass_definitionContext* PrismParser::pass_definition() { Pass_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, SIGParser::RulePass_definition); + enterRule(_localctx, 166, PrismParser::RulePass_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -8167,23 +8167,23 @@ SIGParser::Pass_definitionContext* SIGParser::pass_definition() { alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); } setState(790); - match(SIGParser::PASS); + match(PrismParser::PASS); setState(791); name_id(); setState(793); _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::COLON) { + if (_la == PrismParser::COLON) { setState(792); inherit(); } setState(795); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(796); view_block(); setState(797); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -8197,58 +8197,58 @@ SIGParser::Pass_definitionContext* SIGParser::pass_definition() { //----------------- Pipeline_statContext ------------------------------------------------------------------ -SIGParser::Pipeline_statContext::Pipeline_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Pipeline_statContext::Pipeline_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Name_idContext* SIGParser::Pipeline_statContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Pipeline_statContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pipeline_statContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Pipeline_statContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -std::vector SIGParser::Pipeline_statContext::option_block() { - return getRuleContexts(); +std::vector PrismParser::Pipeline_statContext::option_block() { + return getRuleContexts(); } -SIGParser::Option_blockContext* SIGParser::Pipeline_statContext::option_block(size_t i) { - return getRuleContext(i); +PrismParser::Option_blockContext* PrismParser::Pipeline_statContext::option_block(size_t i) { + return getRuleContext(i); } -tree::TerminalNode* SIGParser::Pipeline_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Pipeline_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Pipeline_statContext::getRuleIndex() const { - return SIGParser::RulePipeline_stat; +size_t PrismParser::Pipeline_statContext::getRuleIndex() const { + return PrismParser::RulePipeline_stat; } -void SIGParser::Pipeline_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pipeline_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPipeline_stat(this); } -void SIGParser::Pipeline_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pipeline_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPipeline_stat(this); } -std::any SIGParser::Pipeline_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Pipeline_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPipeline_stat(this); else return visitor->visitChildren(this); } -SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { +PrismParser::Pipeline_statContext* PrismParser::pipeline_stat() { Pipeline_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, SIGParser::RulePipeline_stat); + enterRule(_localctx, 168, PrismParser::RulePipeline_stat); size_t _la = 0; #if __cplusplus > 201703L @@ -8262,13 +8262,13 @@ SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { setState(809); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::OSBRACE: - case SIGParser::ID: { + case PrismParser::OSBRACE: + case PrismParser::ID: { enterOuterAlt(_localctx, 1); setState(802); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::OSBRACE) { + while (_la == PrismParser::OSBRACE) { setState(799); option_block(); setState(804); @@ -8278,14 +8278,14 @@ SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { setState(805); name_id(); setState(806); - match(SIGParser::SCOL); + match(PrismParser::SCOL); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); setState(808); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -8305,46 +8305,46 @@ SIGParser::Pipeline_statContext* SIGParser::pipeline_stat() { //----------------- Pipeline_blockContext ------------------------------------------------------------------ -SIGParser::Pipeline_blockContext::Pipeline_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Pipeline_blockContext::Pipeline_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Pipeline_blockContext::pipeline_stat() { - return getRuleContexts(); +std::vector PrismParser::Pipeline_blockContext::pipeline_stat() { + return getRuleContexts(); } -SIGParser::Pipeline_statContext* SIGParser::Pipeline_blockContext::pipeline_stat(size_t i) { - return getRuleContext(i); +PrismParser::Pipeline_statContext* PrismParser::Pipeline_blockContext::pipeline_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Pipeline_blockContext::getRuleIndex() const { - return SIGParser::RulePipeline_block; +size_t PrismParser::Pipeline_blockContext::getRuleIndex() const { + return PrismParser::RulePipeline_block; } -void SIGParser::Pipeline_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pipeline_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPipeline_block(this); } -void SIGParser::Pipeline_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pipeline_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPipeline_block(this); } -std::any SIGParser::Pipeline_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Pipeline_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPipeline_block(this); else return visitor->visitChildren(this); } -SIGParser::Pipeline_blockContext* SIGParser::pipeline_block() { +PrismParser::Pipeline_blockContext* PrismParser::pipeline_block() { Pipeline_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, SIGParser::RulePipeline_block); + enterRule(_localctx, 170, PrismParser::RulePipeline_block); size_t _la = 0; #if __cplusplus > 201703L @@ -8380,58 +8380,58 @@ SIGParser::Pipeline_blockContext* SIGParser::pipeline_block() { //----------------- Pipeline_definitionContext ------------------------------------------------------------------ -SIGParser::Pipeline_definitionContext::Pipeline_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Pipeline_definitionContext::Pipeline_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Pipeline_definitionContext::PIPELINE() { - return getToken(SIGParser::PIPELINE, 0); +tree::TerminalNode* PrismParser::Pipeline_definitionContext::PIPELINE() { + return getToken(PrismParser::PIPELINE, 0); } -SIGParser::Name_idContext* SIGParser::Pipeline_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Pipeline_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pipeline_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Pipeline_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Pipeline_blockContext* SIGParser::Pipeline_definitionContext::pipeline_block() { - return getRuleContext(0); +PrismParser::Pipeline_blockContext* PrismParser::Pipeline_definitionContext::pipeline_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Pipeline_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Pipeline_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -size_t SIGParser::Pipeline_definitionContext::getRuleIndex() const { - return SIGParser::RulePipeline_definition; +size_t PrismParser::Pipeline_definitionContext::getRuleIndex() const { + return PrismParser::RulePipeline_definition; } -void SIGParser::Pipeline_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pipeline_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPipeline_definition(this); } -void SIGParser::Pipeline_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pipeline_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPipeline_definition(this); } -std::any SIGParser::Pipeline_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Pipeline_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPipeline_definition(this); else return visitor->visitChildren(this); } -SIGParser::Pipeline_definitionContext* SIGParser::pipeline_definition() { +PrismParser::Pipeline_definitionContext* PrismParser::pipeline_definition() { Pipeline_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, SIGParser::RulePipeline_definition); + enterRule(_localctx, 172, PrismParser::RulePipeline_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8443,15 +8443,15 @@ SIGParser::Pipeline_definitionContext* SIGParser::pipeline_definition() { try { enterOuterAlt(_localctx, 1); setState(817); - match(SIGParser::PIPELINE); + match(PrismParser::PIPELINE); setState(818); name_id(); setState(819); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(820); pipeline_block(); setState(821); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -8465,54 +8465,54 @@ SIGParser::Pipeline_definitionContext* SIGParser::pipeline_definition() { //----------------- Enum_value_declarationContext ------------------------------------------------------------------ -SIGParser::Enum_value_declarationContext::Enum_value_declarationContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Enum_value_declarationContext::Enum_value_declarationContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Name_idContext* SIGParser::Enum_value_declarationContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Enum_value_declarationContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Enum_value_declarationContext::SCOL() { - return getToken(SIGParser::SCOL, 0); +tree::TerminalNode* PrismParser::Enum_value_declarationContext::SCOL() { + return getToken(PrismParser::SCOL, 0); } -tree::TerminalNode* SIGParser::Enum_value_declarationContext::ASSIGN() { - return getToken(SIGParser::ASSIGN, 0); +tree::TerminalNode* PrismParser::Enum_value_declarationContext::ASSIGN() { + return getToken(PrismParser::ASSIGN, 0); } -SIGParser::Value_idContext* SIGParser::Enum_value_declarationContext::value_id() { - return getRuleContext(0); +PrismParser::Value_idContext* PrismParser::Enum_value_declarationContext::value_id() { + return getRuleContext(0); } -size_t SIGParser::Enum_value_declarationContext::getRuleIndex() const { - return SIGParser::RuleEnum_value_declaration; +size_t PrismParser::Enum_value_declarationContext::getRuleIndex() const { + return PrismParser::RuleEnum_value_declaration; } -void SIGParser::Enum_value_declarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_value_declarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEnum_value_declaration(this); } -void SIGParser::Enum_value_declarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_value_declarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEnum_value_declaration(this); } -std::any SIGParser::Enum_value_declarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Enum_value_declarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitEnum_value_declaration(this); else return visitor->visitChildren(this); } -SIGParser::Enum_value_declarationContext* SIGParser::enum_value_declaration() { +PrismParser::Enum_value_declarationContext* PrismParser::enum_value_declaration() { Enum_value_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, SIGParser::RuleEnum_value_declaration); + enterRule(_localctx, 174, PrismParser::RuleEnum_value_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -8530,14 +8530,14 @@ SIGParser::Enum_value_declarationContext* SIGParser::enum_value_declaration() { _errHandler->sync(this); _la = _input->LA(1); - if (_la == SIGParser::ASSIGN) { + if (_la == PrismParser::ASSIGN) { setState(824); - match(SIGParser::ASSIGN); + match(PrismParser::ASSIGN); setState(825); value_id(); } setState(828); - match(SIGParser::SCOL); + match(PrismParser::SCOL); } catch (RecognitionException &e) { @@ -8551,46 +8551,46 @@ SIGParser::Enum_value_declarationContext* SIGParser::enum_value_declaration() { //----------------- Enum_statContext ------------------------------------------------------------------ -SIGParser::Enum_statContext::Enum_statContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Enum_statContext::Enum_statContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -SIGParser::Enum_value_declarationContext* SIGParser::Enum_statContext::enum_value_declaration() { - return getRuleContext(0); +PrismParser::Enum_value_declarationContext* PrismParser::Enum_statContext::enum_value_declaration() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Enum_statContext::COMMENT() { - return getToken(SIGParser::COMMENT, 0); +tree::TerminalNode* PrismParser::Enum_statContext::COMMENT() { + return getToken(PrismParser::COMMENT, 0); } -size_t SIGParser::Enum_statContext::getRuleIndex() const { - return SIGParser::RuleEnum_stat; +size_t PrismParser::Enum_statContext::getRuleIndex() const { + return PrismParser::RuleEnum_stat; } -void SIGParser::Enum_statContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_statContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEnum_stat(this); } -void SIGParser::Enum_statContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_statContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEnum_stat(this); } -std::any SIGParser::Enum_statContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Enum_statContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitEnum_stat(this); else return visitor->visitChildren(this); } -SIGParser::Enum_statContext* SIGParser::enum_stat() { +PrismParser::Enum_statContext* PrismParser::enum_stat() { Enum_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, SIGParser::RuleEnum_stat); + enterRule(_localctx, 176, PrismParser::RuleEnum_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8603,17 +8603,17 @@ SIGParser::Enum_statContext* SIGParser::enum_stat() { setState(832); _errHandler->sync(this); switch (_input->LA(1)) { - case SIGParser::ID: { + case PrismParser::ID: { enterOuterAlt(_localctx, 1); setState(830); enum_value_declaration(); break; } - case SIGParser::COMMENT: { + case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); setState(831); - match(SIGParser::COMMENT); + match(PrismParser::COMMENT); break; } @@ -8633,46 +8633,46 @@ SIGParser::Enum_statContext* SIGParser::enum_stat() { //----------------- Enum_blockContext ------------------------------------------------------------------ -SIGParser::Enum_blockContext::Enum_blockContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Enum_blockContext::Enum_blockContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -std::vector SIGParser::Enum_blockContext::enum_stat() { - return getRuleContexts(); +std::vector PrismParser::Enum_blockContext::enum_stat() { + return getRuleContexts(); } -SIGParser::Enum_statContext* SIGParser::Enum_blockContext::enum_stat(size_t i) { - return getRuleContext(i); +PrismParser::Enum_statContext* PrismParser::Enum_blockContext::enum_stat(size_t i) { + return getRuleContext(i); } -size_t SIGParser::Enum_blockContext::getRuleIndex() const { - return SIGParser::RuleEnum_block; +size_t PrismParser::Enum_blockContext::getRuleIndex() const { + return PrismParser::RuleEnum_block; } -void SIGParser::Enum_blockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_blockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEnum_block(this); } -void SIGParser::Enum_blockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_blockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEnum_block(this); } -std::any SIGParser::Enum_blockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Enum_blockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitEnum_block(this); else return visitor->visitChildren(this); } -SIGParser::Enum_blockContext* SIGParser::enum_block() { +PrismParser::Enum_blockContext* PrismParser::enum_block() { Enum_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, SIGParser::RuleEnum_block); + enterRule(_localctx, 178, PrismParser::RuleEnum_block); size_t _la = 0; #if __cplusplus > 201703L @@ -8687,9 +8687,9 @@ SIGParser::Enum_blockContext* SIGParser::enum_block() { setState(837); _errHandler->sync(this); _la = _input->LA(1); - while (_la == SIGParser::ID + while (_la == PrismParser::ID - || _la == SIGParser::COMMENT) { + || _la == PrismParser::COMMENT) { setState(834); enum_stat(); setState(839); @@ -8709,58 +8709,58 @@ SIGParser::Enum_blockContext* SIGParser::enum_block() { //----------------- Enum_definitionContext ------------------------------------------------------------------ -SIGParser::Enum_definitionContext::Enum_definitionContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Enum_definitionContext::Enum_definitionContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Enum_definitionContext::ENUM() { - return getToken(SIGParser::ENUM, 0); +tree::TerminalNode* PrismParser::Enum_definitionContext::ENUM() { + return getToken(PrismParser::ENUM, 0); } -SIGParser::Name_idContext* SIGParser::Enum_definitionContext::name_id() { - return getRuleContext(0); +PrismParser::Name_idContext* PrismParser::Enum_definitionContext::name_id() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Enum_definitionContext::OBRACE() { - return getToken(SIGParser::OBRACE, 0); +tree::TerminalNode* PrismParser::Enum_definitionContext::OBRACE() { + return getToken(PrismParser::OBRACE, 0); } -SIGParser::Enum_blockContext* SIGParser::Enum_definitionContext::enum_block() { - return getRuleContext(0); +PrismParser::Enum_blockContext* PrismParser::Enum_definitionContext::enum_block() { + return getRuleContext(0); } -tree::TerminalNode* SIGParser::Enum_definitionContext::CBRACE() { - return getToken(SIGParser::CBRACE, 0); +tree::TerminalNode* PrismParser::Enum_definitionContext::CBRACE() { + return getToken(PrismParser::CBRACE, 0); } -size_t SIGParser::Enum_definitionContext::getRuleIndex() const { - return SIGParser::RuleEnum_definition; +size_t PrismParser::Enum_definitionContext::getRuleIndex() const { + return PrismParser::RuleEnum_definition; } -void SIGParser::Enum_definitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_definitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterEnum_definition(this); } -void SIGParser::Enum_definitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Enum_definitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitEnum_definition(this); } -std::any SIGParser::Enum_definitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Enum_definitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitEnum_definition(this); else return visitor->visitChildren(this); } -SIGParser::Enum_definitionContext* SIGParser::enum_definition() { +PrismParser::Enum_definitionContext* PrismParser::enum_definition() { Enum_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, SIGParser::RuleEnum_definition); + enterRule(_localctx, 180, PrismParser::RuleEnum_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8772,15 +8772,15 @@ SIGParser::Enum_definitionContext* SIGParser::enum_definition() { try { enterOuterAlt(_localctx, 1); setState(840); - match(SIGParser::ENUM); + match(PrismParser::ENUM); setState(841); name_id(); setState(842); - match(SIGParser::OBRACE); + match(PrismParser::OBRACE); setState(843); enum_block(); setState(844); - match(SIGParser::CBRACE); + match(PrismParser::CBRACE); } catch (RecognitionException &e) { @@ -8794,38 +8794,38 @@ SIGParser::Enum_definitionContext* SIGParser::enum_definition() { //----------------- Shader_typeContext ------------------------------------------------------------------ -SIGParser::Shader_typeContext::Shader_typeContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Shader_typeContext::Shader_typeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -size_t SIGParser::Shader_typeContext::getRuleIndex() const { - return SIGParser::RuleShader_type; +size_t PrismParser::Shader_typeContext::getRuleIndex() const { + return PrismParser::RuleShader_type; } -void SIGParser::Shader_typeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Shader_typeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterShader_type(this); } -void SIGParser::Shader_typeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Shader_typeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitShader_type(this); } -std::any SIGParser::Shader_typeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Shader_typeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitShader_type(this); else return visitor->visitChildren(this); } -SIGParser::Shader_typeContext* SIGParser::shader_type() { +PrismParser::Shader_typeContext* PrismParser::shader_type() { Shader_typeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, SIGParser::RuleShader_type); + enterRule(_localctx, 182, PrismParser::RuleShader_type); size_t _la = 0; #if __cplusplus > 201703L @@ -8860,38 +8860,38 @@ SIGParser::Shader_typeContext* SIGParser::shader_type() { //----------------- Pso_param_idContext ------------------------------------------------------------------ -SIGParser::Pso_param_idContext::Pso_param_idContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Pso_param_idContext::Pso_param_idContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -size_t SIGParser::Pso_param_idContext::getRuleIndex() const { - return SIGParser::RulePso_param_id; +size_t PrismParser::Pso_param_idContext::getRuleIndex() const { + return PrismParser::RulePso_param_id; } -void SIGParser::Pso_param_idContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pso_param_idContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterPso_param_id(this); } -void SIGParser::Pso_param_idContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Pso_param_idContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitPso_param_id(this); } -std::any SIGParser::Pso_param_idContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Pso_param_idContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitPso_param_id(this); else return visitor->visitChildren(this); } -SIGParser::Pso_param_idContext* SIGParser::pso_param_id() { +PrismParser::Pso_param_idContext* PrismParser::pso_param_id() { Pso_param_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, SIGParser::RulePso_param_id); + enterRule(_localctx, 184, PrismParser::RulePso_param_id); size_t _la = 0; #if __cplusplus > 201703L @@ -8926,46 +8926,46 @@ SIGParser::Pso_param_idContext* SIGParser::pso_param_id() { //----------------- Bool_typeContext ------------------------------------------------------------------ -SIGParser::Bool_typeContext::Bool_typeContext(ParserRuleContext *parent, size_t invokingState) +PrismParser::Bool_typeContext::Bool_typeContext(ParserRuleContext *parent, size_t invokingState) : ParserRuleContext(parent, invokingState) { } -tree::TerminalNode* SIGParser::Bool_typeContext::TRUE() { - return getToken(SIGParser::TRUE, 0); +tree::TerminalNode* PrismParser::Bool_typeContext::TRUE() { + return getToken(PrismParser::TRUE, 0); } -tree::TerminalNode* SIGParser::Bool_typeContext::FALSE() { - return getToken(SIGParser::FALSE, 0); +tree::TerminalNode* PrismParser::Bool_typeContext::FALSE() { + return getToken(PrismParser::FALSE, 0); } -size_t SIGParser::Bool_typeContext::getRuleIndex() const { - return SIGParser::RuleBool_type; +size_t PrismParser::Bool_typeContext::getRuleIndex() const { + return PrismParser::RuleBool_type; } -void SIGParser::Bool_typeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Bool_typeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->enterBool_type(this); } -void SIGParser::Bool_typeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); +void PrismParser::Bool_typeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); if (parserListener != nullptr) parserListener->exitBool_type(this); } -std::any SIGParser::Bool_typeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) +std::any PrismParser::Bool_typeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) return parserVisitor->visitBool_type(this); else return visitor->visitChildren(this); } -SIGParser::Bool_typeContext* SIGParser::bool_type() { +PrismParser::Bool_typeContext* PrismParser::bool_type() { Bool_typeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, SIGParser::RuleBool_type); + enterRule(_localctx, 186, PrismParser::RuleBool_type); size_t _la = 0; #if __cplusplus > 201703L @@ -8979,9 +8979,9 @@ SIGParser::Bool_typeContext* SIGParser::bool_type() { enterOuterAlt(_localctx, 1); setState(850); _la = _input->LA(1); - if (!(_la == SIGParser::TRUE + if (!(_la == PrismParser::TRUE - || _la == SIGParser::FALSE)) { + || _la == PrismParser::FALSE)) { _errHandler->recoverInline(this); } else { @@ -8999,6 +8999,6 @@ SIGParser::Bool_typeContext* SIGParser::bool_type() { return _localctx; } -void SIGParser::initialize() { - ::antlr4::internal::call_once(sigParserOnceFlag, sigParserInitialize); +void PrismParser::initialize() { + ::antlr4::internal::call_once(prismParserOnceFlag, prismParserInitialize); } diff --git a/sources/SIGParser/.antlr/SIGParser.h b/sources/Prism/.antlr/PrismParser.h similarity index 99% rename from sources/SIGParser/.antlr/SIGParser.h rename to sources/Prism/.antlr/PrismParser.h index 3ddcb1027..a87297dbb 100644 --- a/sources/SIGParser/.antlr/SIGParser.h +++ b/sources/Prism/.antlr/PrismParser.h @@ -1,5 +1,5 @@ -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 #pragma once @@ -9,7 +9,7 @@ -class SIGParser : public antlr4::Parser { +class PrismParser : public antlr4::Parser { public: enum { T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, @@ -64,11 +64,11 @@ class SIGParser : public antlr4::Parser { RuleBool_type = 93 }; - explicit SIGParser(antlr4::TokenStream *input); + explicit PrismParser(antlr4::TokenStream *input); - SIGParser(antlr4::TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options); + PrismParser(antlr4::TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options); - ~SIGParser() override; + ~PrismParser() override; std::string getGrammarFileName() const override; diff --git a/sources/Prism/.antlr/PrismVisitor.cpp b/sources/Prism/.antlr/PrismVisitor.cpp new file mode 100644 index 000000000..52134c47e --- /dev/null +++ b/sources/Prism/.antlr/PrismVisitor.cpp @@ -0,0 +1,7 @@ + +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 + + +#include "PrismVisitor.h" + + diff --git a/sources/Prism/.antlr/PrismVisitor.h b/sources/Prism/.antlr/PrismVisitor.h new file mode 100644 index 000000000..eb688476d --- /dev/null +++ b/sources/Prism/.antlr/PrismVisitor.h @@ -0,0 +1,212 @@ + +// Generated from sources/Prism/Prism.g4 by ANTLR 4.11.1 + +#pragma once + + +#include "antlr4-runtime.h" +#include "PrismParser.h" + + + +/** + * This class defines an abstract visitor for a parse tree + * produced by PrismParser. + */ +class PrismVisitor : public antlr4::tree::AbstractParseTreeVisitor { +public: + + /** + * Visit parse trees produced by PrismParser. + */ + virtual std::any visitParse(PrismParser::ParseContext *context) = 0; + + virtual std::any visitConst_definition(PrismParser::Const_definitionContext *context) = 0; + + virtual std::any visitBind_option(PrismParser::Bind_optionContext *context) = 0; + + virtual std::any visitCond_expr(PrismParser::Cond_exprContext *context) = 0; + + virtual std::any visitCond_term(PrismParser::Cond_termContext *context) = 0; + + virtual std::any visitQualified_ref(PrismParser::Qualified_refContext *context) = 0; + + virtual std::any visitMember_ref(PrismParser::Member_refContext *context) = 0; + + virtual std::any visitCond_op(PrismParser::Cond_opContext *context) = 0; + + virtual std::any visitFlag_value_holder(PrismParser::Flag_value_holderContext *context) = 0; + + virtual std::any visitRaw_value(PrismParser::Raw_valueContext *context) = 0; + + virtual std::any visitOptions_assign(PrismParser::Options_assignContext *context) = 0; + + virtual std::any visitOption(PrismParser::OptionContext *context) = 0; + + virtual std::any visitOption_block(PrismParser::Option_blockContext *context) = 0; + + virtual std::any visitArray_count_id(PrismParser::Array_count_idContext *context) = 0; + + virtual std::any visitArray(PrismParser::ArrayContext *context) = 0; + + virtual std::any visitValue_declaration(PrismParser::Value_declarationContext *context) = 0; + + virtual std::any visitSlot_declaration(PrismParser::Slot_declarationContext *context) = 0; + + virtual std::any visitSampler_declaration(PrismParser::Sampler_declarationContext *context) = 0; + + virtual std::any visitDefine_declaration(PrismParser::Define_declarationContext *context) = 0; + + virtual std::any visitRtv_formats_declaration(PrismParser::Rtv_formats_declarationContext *context) = 0; + + virtual std::any visitBlends_declaration(PrismParser::Blends_declarationContext *context) = 0; + + virtual std::any visitPointer(PrismParser::PointerContext *context) = 0; + + virtual std::any visitPso_param(PrismParser::Pso_paramContext *context) = 0; + + virtual std::any visitClass_no_template(PrismParser::Class_no_templateContext *context) = 0; + + virtual std::any visitType_with_template(PrismParser::Type_with_templateContext *context) = 0; + + virtual std::any visitInherit_id(PrismParser::Inherit_idContext *context) = 0; + + virtual std::any visitName_id(PrismParser::Name_idContext *context) = 0; + + virtual std::any visitOption_id(PrismParser::Option_idContext *context) = 0; + + virtual std::any visitOwner_id(PrismParser::Owner_idContext *context) = 0; + + virtual std::any visitTemplate_id(PrismParser::Template_idContext *context) = 0; + + virtual std::any visitFunction_id(PrismParser::Function_idContext *context) = 0; + + virtual std::any visitValue_id(PrismParser::Value_idContext *context) = 0; + + virtual std::any visitValue_id_ignore(PrismParser::Value_id_ignoreContext *context) = 0; + + virtual std::any visitType_id(PrismParser::Type_idContext *context) = 0; + + virtual std::any visitInsert_block(PrismParser::Insert_blockContext *context) = 0; + + virtual std::any visitShader_path(PrismParser::Shader_pathContext *context) = 0; + + virtual std::any visitInherit(PrismParser::InheritContext *context) = 0; + + virtual std::any visitLayout_stat(PrismParser::Layout_statContext *context) = 0; + + virtual std::any visitLayout_block(PrismParser::Layout_blockContext *context) = 0; + + virtual std::any visitLayout_definition(PrismParser::Layout_definitionContext *context) = 0; + + virtual std::any visitTable_stat(PrismParser::Table_statContext *context) = 0; + + virtual std::any visitFunction_definition(PrismParser::Function_definitionContext *context) = 0; + + virtual std::any visitFunction_params(PrismParser::Function_paramsContext *context) = 0; + + virtual std::any visitFunction_semantic(PrismParser::Function_semanticContext *context) = 0; + + virtual std::any visitTable_block(PrismParser::Table_blockContext *context) = 0; + + virtual std::any visitTable_definition(PrismParser::Table_definitionContext *context) = 0; + + virtual std::any visitRt_color_declaration(PrismParser::Rt_color_declarationContext *context) = 0; + + virtual std::any visitRt_ds_declaration(PrismParser::Rt_ds_declarationContext *context) = 0; + + virtual std::any visitRt_stat(PrismParser::Rt_statContext *context) = 0; + + virtual std::any visitRt_block(PrismParser::Rt_blockContext *context) = 0; + + virtual std::any visitRt_definition(PrismParser::Rt_definitionContext *context) = 0; + + virtual std::any visitArray_value_holder(PrismParser::Array_value_holderContext *context) = 0; + + virtual std::any visitArray_value_ids(PrismParser::Array_value_idsContext *context) = 0; + + virtual std::any visitRoot_sig(PrismParser::Root_sigContext *context) = 0; + + virtual std::any visitShader(PrismParser::ShaderContext *context) = 0; + + virtual std::any visitCompute_pso_stat(PrismParser::Compute_pso_statContext *context) = 0; + + virtual std::any visitCompute_pso_block(PrismParser::Compute_pso_blockContext *context) = 0; + + virtual std::any visitCompute_pso_definition(PrismParser::Compute_pso_definitionContext *context) = 0; + + virtual std::any visitGraphics_pso_stat(PrismParser::Graphics_pso_statContext *context) = 0; + + virtual std::any visitGraphics_pso_block(PrismParser::Graphics_pso_blockContext *context) = 0; + + virtual std::any visitGraphics_pso_definition(PrismParser::Graphics_pso_definitionContext *context) = 0; + + virtual std::any visitRtx_pso_stat(PrismParser::Rtx_pso_statContext *context) = 0; + + virtual std::any visitRtx_pso_block(PrismParser::Rtx_pso_blockContext *context) = 0; + + virtual std::any visitRtx_pso_definition(PrismParser::Rtx_pso_definitionContext *context) = 0; + + virtual std::any visitNode_param_id(PrismParser::Node_param_idContext *context) = 0; + + virtual std::any visitNode_param(PrismParser::Node_paramContext *context) = 0; + + virtual std::any visitNode_output_decl(PrismParser::Node_output_declContext *context) = 0; + + virtual std::any visitNode_stat(PrismParser::Node_statContext *context) = 0; + + virtual std::any visitNode_block(PrismParser::Node_blockContext *context) = 0; + + virtual std::any visitNode_definition(PrismParser::Node_definitionContext *context) = 0; + + virtual std::any visitWorkgraph_pso_stat(PrismParser::Workgraph_pso_statContext *context) = 0; + + virtual std::any visitWorkgraph_pso_block(PrismParser::Workgraph_pso_blockContext *context) = 0; + + virtual std::any visitWorkgraph_pso_definition(PrismParser::Workgraph_pso_definitionContext *context) = 0; + + virtual std::any visitRtx_pass_stat(PrismParser::Rtx_pass_statContext *context) = 0; + + virtual std::any visitRtx_pass_block(PrismParser::Rtx_pass_blockContext *context) = 0; + + virtual std::any visitRtx_pass_definition(PrismParser::Rtx_pass_definitionContext *context) = 0; + + virtual std::any visitRtx_raygen_stat(PrismParser::Rtx_raygen_statContext *context) = 0; + + virtual std::any visitRtx_raygen_block(PrismParser::Rtx_raygen_blockContext *context) = 0; + + virtual std::any visitRtx_raygen_definition(PrismParser::Rtx_raygen_definitionContext *context) = 0; + + virtual std::any visitView_declaration(PrismParser::View_declarationContext *context) = 0; + + virtual std::any visitView_stat(PrismParser::View_statContext *context) = 0; + + virtual std::any visitView_block(PrismParser::View_blockContext *context) = 0; + + virtual std::any visitView_definition(PrismParser::View_definitionContext *context) = 0; + + virtual std::any visitPass_definition(PrismParser::Pass_definitionContext *context) = 0; + + virtual std::any visitPipeline_stat(PrismParser::Pipeline_statContext *context) = 0; + + virtual std::any visitPipeline_block(PrismParser::Pipeline_blockContext *context) = 0; + + virtual std::any visitPipeline_definition(PrismParser::Pipeline_definitionContext *context) = 0; + + virtual std::any visitEnum_value_declaration(PrismParser::Enum_value_declarationContext *context) = 0; + + virtual std::any visitEnum_stat(PrismParser::Enum_statContext *context) = 0; + + virtual std::any visitEnum_block(PrismParser::Enum_blockContext *context) = 0; + + virtual std::any visitEnum_definition(PrismParser::Enum_definitionContext *context) = 0; + + virtual std::any visitShader_type(PrismParser::Shader_typeContext *context) = 0; + + virtual std::any visitPso_param_id(PrismParser::Pso_param_idContext *context) = 0; + + virtual std::any visitBool_type(PrismParser::Bool_typeContext *context) = 0; + + +}; + diff --git a/sources/SIGParser/.antlr/antlr4-runtime.h b/sources/Prism/.antlr/antlr4-runtime.h similarity index 100% rename from sources/SIGParser/.antlr/antlr4-runtime.h rename to sources/Prism/.antlr/antlr4-runtime.h diff --git a/sources/SIGParser/Defines.h b/sources/Prism/Defines.h similarity index 68% rename from sources/SIGParser/Defines.h rename to sources/Prism/Defines.h index bd1299f92..c02b6ed08 100644 --- a/sources/SIGParser/Defines.h +++ b/sources/Prism/Defines.h @@ -1,7 +1,7 @@ #pragma once // ============================================================================= -// SIGParser/Defines.h — SIGPARSER LAYER -// SIGParser depends on Core and adds no tool-specific macros. +// Prism/Defines.h — SIGPARSER LAYER +// Prism depends on Core and adds no tool-specific macros. // Chains upward to Core/Defines.h. // ============================================================================= #include "Core/Defines.h" diff --git a/sources/SIGParser/Diagnostics.h b/sources/Prism/Diagnostics.h similarity index 100% rename from sources/SIGParser/Diagnostics.h rename to sources/Prism/Diagnostics.h diff --git a/sources/SIGParser/LSP.cpp b/sources/Prism/LSP.cpp similarity index 98% rename from sources/SIGParser/LSP.cpp rename to sources/Prism/LSP.cpp index eb37df537..4151e8489 100644 --- a/sources/SIGParser/LSP.cpp +++ b/sources/Prism/LSP.cpp @@ -360,7 +360,7 @@ namespace std::map open_docs; // key_of(path) -> buffer std::map last_good; // key_of(path) -> last parse without syntax errors std::map published_uri; // key_of(path) -> uri that currently shows diagnostics - std::filesystem::path root; // the sigs/ directory being validated + std::filesystem::path root; // the defs/ directory being validated // State of the last revalidate(), which definition/completion answer from. // A file with syntax errors is represented by its last good parse. @@ -381,8 +381,8 @@ namespace bool dirty = false; bool shutting_down = false; - // Validation is cross-file (a condition in one .sig names a struct from - // another), so the root is the enclosing sigs/ directory, not the file. + // Validation is cross-file (a condition in one .prism names a struct from + // another), so the root is the enclosing defs/ directory, not the file. void adopt_root(const std::filesystem::path& file) { if (!root.empty() && key_of(file).rfind(key_of(root) + "/", 0) == 0) @@ -393,7 +393,7 @@ namespace { std::string name = p.filename().string(); std::transform(name.begin(), name.end(), name.begin(), [](unsigned char c) { return (char)std::tolower(c); }); - if (name == "sigs") + if (name == "defs") { dir = p; break; @@ -439,7 +439,7 @@ namespace for (auto it = std::filesystem::recursive_directory_iterator(root, ec); !ec && it != std::filesystem::recursive_directory_iterator(); it.increment(ec)) { - if (!it->is_regular_file() || it->path().extension() != ".sig") + if (!it->is_regular_file() || it->path().extension() != ".prism") continue; std::filesystem::path path = std::filesystem::absolute(it->path()).lexically_normal(); @@ -568,7 +568,7 @@ namespace { "layout", "slot" }, { "Pipeline", "pipeline entry" }, }; - // Mirrors SIG.g4's shader_type rule. + // Mirrors Prism.g4's shader_type rule. inline static const std::set SHADER_STAGES = { "compute", "vertex", "pixel", "domain", "hull", "geometry", "miss", "closest_hit", "any_hit", "raygen", "amplification", "mesh", "shader", @@ -990,7 +990,7 @@ namespace for (const auto& p : model.pipelines) for (const auto& e : p.entries) f(e); } - // Every value some .sig already gives this option. No hand-kept lists: + // Every value some .prism already gives this option. No hand-kept lists: // [Always] offers the flags actually in use, [Bind] the slots, [Format] // the formats. std::set values_used_for(const std::string& option_name) const @@ -1299,7 +1299,7 @@ namespace } else if (c == '#' || (c == '/' && i + 1 < t.size() && t[i + 1] == '/')) { - // # comments in SIG, // comments inside HLSL function bodies. + // # comments in Prism, // comments inside HLSL function bodies. while (i + 1 < t.size() && t[i + 1] != '\n') ++i; } @@ -1500,7 +1500,7 @@ namespace R"("documentSymbolProvider":true,"workspaceSymbolProvider":true,)" R"("semanticTokensProvider":{"legend":{"tokenTypes":["struct","enum","class","namespace","enumMember","property","variable"],"tokenModifiers":[]},"full":true},)" R"("completionProvider":{"triggerCharacters":[":",".","[",",","\"","/","="]}},)" - R"("serverInfo":{"name":"sigparser","version":"1"}})"); + R"("serverInfo":{"name":"prismc","version":"1"}})"); } else if (method == "textDocument/definition" && params) { @@ -1593,7 +1593,7 @@ int run_lsp() } catch (std::exception& e) { - std::cerr << "sigparser --lsp: " << e.what() << std::endl; + std::cerr << "prismc --lsp: " << e.what() << std::endl; // A request must always get a reply, or the client waits on it forever. if (msg.has("id") && msg.has("method")) diff --git a/sources/SIGParser/LSP.h b/sources/Prism/LSP.h similarity index 65% rename from sources/SIGParser/LSP.h rename to sources/Prism/LSP.h index 7825cba35..cc546bb5c 100644 --- a/sources/SIGParser/LSP.h +++ b/sources/Prism/LSP.h @@ -1,6 +1,6 @@ #pragma once -// `sigparser --lsp`: a Language Server Protocol server over stdin/stdout that +// `prismc --lsp`: a Language Server Protocol server over stdin/stdout that // publishes the same diagnostics a generator run would report, live, for the // unsaved contents of open editor buffers. int run_lsp(); diff --git a/sources/SIGParser/Main.cpp b/sources/Prism/Main.cpp similarity index 98% rename from sources/SIGParser/Main.cpp rename to sources/Prism/Main.cpp index 440a01c54..8b250d291 100644 --- a/sources/SIGParser/Main.cpp +++ b/sources/Prism/Main.cpp @@ -17,7 +17,7 @@ static const std::string hlsl_path = shaders_path + "/autogen"; static const std::string cpp_path_render = "../../sources/RenderSystem/FrameGraph/autogen"; // Mirrors FrameGraph::WRITEABLE_FLAGS (sources/RenderSystem/FrameGraph/FrameGraph.Base.ixx). -// SIGParser can't include that C++ module, so keep these two lists in sync by hand - +// Prism can't include that C++ module, so keep these two lists in sync by hand - // used to derive [Always=X] fields' write-ness for resource_accesses[]. static const std::set WRITEABLE_FLAG_NAMES = { "CopyDest", "UnorderedAccess", "RenderTarget", "DepthStencil" @@ -136,7 +136,7 @@ static const std::set CONDITION_OPTIONS = { // provable dependency set while its resource set silently varies. // // Empty right now: [NeedDynamic] was the only member and UI_Render, its only -// user, moved to a declared field plus Graph::override_resource (ui.sig). Kept +// user, moved to a declared field plus Graph::override_resource (ui.prism). Kept // so that reintroducing such an option cannot quietly produce a lying mask. static const std::set UNPROVABLE_STRUCTURAL_OPTIONS = { }; @@ -179,7 +179,7 @@ static void render_expr(const Parsed& parsed, have_expr& e) switch (t.kind) { case ExprTerm::Qualified: - // Owner::name is a context field only if Owner is a SIG-declared + // Owner::name is a context field only if Owner is a Prism-declared // struct. Anything else (an enum value, a Constants:: entry) names // no runtime state, so it passes through and records no dependency. if (parsed.tables.find(t.owner)) @@ -227,7 +227,7 @@ static void render_expr(const Parsed& parsed, have_expr& e) } // Walks every condition-valued option on every pass and pass field and renders -// it. Runs after parsed.setup() so parsed.tables is complete across all .sig +// it. Runs after parsed.setup() so parsed.tables is complete across all .prism // files -- a condition may name a context declared in a file parsed later. static void render_condition_options(Parsed& parsed) { @@ -257,7 +257,7 @@ static void render_condition_options(Parsed& parsed) // RaytraceRaygen/RaytracePass ::ID must equal the item's position in its // RaytracePSO's gens/passes list -- RTX.ixx static_asserts it against the // Typelist index. Counting per bound PSO over the merged model is what makes -// that hold regardless of which .sig file declares the item; a per-file +// that hold regardless of which .prism file declares the item; a per-file // counter gave a raygen in a second file ID 0, colliding with the first one. static void assign_rtx_ids(Parsed& parsed) { @@ -285,14 +285,14 @@ int main(int argc, char** argv) { Parsed parsed; - iterate_files("sigs/", [&](std::wstring filename) + iterate_files("defs/", [&](std::wstring filename) { std::wcout << ((filename + L"\n")) << std::endl; auto p = parse(filename); - // Stamp every top-level named item with its source .sig path so + // Stamp every top-level named item with its source .prism path so // templates can emit an autogenerated-from comment in the output. - std::string sig_path = "sources/SIGParser/" + std::string sig_path = "sources/Prism/" + std::filesystem::path(filename).generic_string(); auto tag = [&](auto& container) { @@ -572,7 +572,7 @@ int main(int argc, char** argv) // name, in the exact order the enums emit them. // // A stored graph plan records passes and resources by ID, and editing a - // .sig renumbers those enums. Loading a plan built against a different ID + // .prism renumbers those enums. Loading a plan built against a different ID // space does not fail, it MISAPPLIES: wrong resource, wrong pass, wrong // barriers. Comparing this constant turns that silent corruption into a // plain cache miss. @@ -1053,7 +1053,7 @@ int main(int argc, char** argv) const option* size = p.find_option("Size"); if (!size) return ""; - // Raw (backtick) text is pasted verbatim -- the .sig author + // Raw (backtick) text is pasted verbatim -- the .prism author // already wrote a complete, valid C++ expression, so no // literal/owner-reference resolution applies to it. if (size->value_atom.is_raw) diff --git a/sources/SIGParser/Parsed.cpp b/sources/Prism/Parsed.cpp similarity index 99% rename from sources/SIGParser/Parsed.cpp rename to sources/Prism/Parsed.cpp index 8bc3d0431..3a72b3e77 100644 --- a/sources/SIGParser/Parsed.cpp +++ b/sources/Prism/Parsed.cpp @@ -256,7 +256,7 @@ void Table::setup(Parsed* all) // A field type that isn't a recognized scalar prefix defaults to // ValueType::STRUCT at parse time (have_type::detect_type), since enums - // may be declared in a .sig file parsed after this one. Resolve enum + // may be declared in a .prism file parsed after this one. Resolve enum // field types before they're mistaken for nested tables below -- an // enum-typed field is plain constant-buffer data, same as an int/uint // field. Called again at the bottom of this function, after the final diff --git a/sources/SIGParser/Parsed.h b/sources/Prism/Parsed.h similarity index 98% rename from sources/SIGParser/Parsed.h rename to sources/Prism/Parsed.h index 290c317af..e5eb7e75a 100644 --- a/sources/SIGParser/Parsed.h +++ b/sources/Prism/Parsed.h @@ -54,7 +54,7 @@ struct parsed_type struct have_name : public virtual parsed_type { std::string name; - std::string source_file; // path of the .sig file that defined this item + std::string source_file; // path of the .prism file that defined this item SourceLocation name_loc; // the name token itself; loc may point at a leading [option] ~have_name() override = default; @@ -305,7 +305,7 @@ struct have_owner : public virtual parsed_type // Rendering is deferred to codegen rather than done while parsing because // resolving Qualified -- deciding whether `Owner::name` is a Table:: context // field or an enum value -- needs parsed.tables/parsed.enums fully populated, -// and the struct may be declared in a .sig file parsed after this one. +// and the struct may be declared in a .prism file parsed after this one. struct ExprTerm : public virtual parsed_type { enum Kind @@ -994,7 +994,7 @@ struct Parsed : public parsed_type my_container pipelines; my_container enums; - // Top-level `const Name = value;` declarations (SIG.g4's const_definition). + // Top-level `const Name = value;` declarations (Prism.g4's const_definition). // Reuses `option`'s existing name+ValueAtom shape rather than a bespoke // struct -- a const's value supports exactly the same literal/owner-ref/ // raw forms a bind_option's value already does. diff --git a/sources/SIGParser/Parsing.cpp b/sources/Prism/Parsing.cpp similarity index 87% rename from sources/SIGParser/Parsing.cpp rename to sources/Prism/Parsing.cpp index c27d2fcbe..4f1cc5a15 100644 --- a/sources/SIGParser/Parsing.cpp +++ b/sources/Prism/Parsing.cpp @@ -1,17 +1,17 @@ import Core; import antlr4; #undef EOF -#include ".antlr/SIGLexer.h" -#include ".antlr/SIGParser.h" -#include ".antlr/SIGBaseListener.h" -#include ".antlr/SIGBaseVisitor.h" +#include ".antlr/PrismLexer.h" +#include ".antlr/PrismParser.h" +#include ".antlr/PrismBaseListener.h" +#include ".antlr/PrismBaseVisitor.h" using namespace antlr4; #include "Parsing.h" #include "Diagnostics.h" // ANTLR's default listener prints to stderr and then recovers, so a malformed -// .sig would otherwise yield a half-built model that generates plausible output. +// .prism would otherwise yield a half-built model that generates plausible output. class CollectingErrorListener : public BaseErrorListener { std::string file; @@ -25,7 +25,7 @@ class CollectingErrorListener : public BaseErrorListener } }; -class TreeShapeListener : public SIGBaseListener +class TreeShapeListener : public PrismBaseListener { public: Parsed& parsed; @@ -114,21 +114,21 @@ class TreeShapeListener : public SIGBaseListener } #define GENERATE(x) \ - virtual void exit##x##(SIGParser::##x##Context * ctx) override { \ + virtual void exit##x##(PrismParser::##x##Context * ctx) override { \ end_elem();\ }\ - virtual void enter##x##(SIGParser::##x##Context* ctx) override { \ + virtual void enter##x##(PrismParser::##x##Context* ctx) override { \ enter_body_##x(ctx);\ stamp(ctx);\ }\ - void enter_body_##x(SIGParser::##x##Context* ctx) + void enter_body_##x(PrismParser::##x##Context* ctx) #define EXIT(x) \ - virtual void exit##x##(SIGParser::##x##Context * ctx) override + virtual void exit##x##(PrismParser::##x##Context * ctx) override #define ENTER(x) \ - virtual void enter##x##(SIGParser::##x##Context* ctx) override + virtual void enter##x##(PrismParser::##x##Context* ctx) override GENERATE(Layout_definition) @@ -368,14 +368,14 @@ class TreeShapeListener : public SIGBaseListener setup_list(get_elem().values); } - void enterName_id(SIGParser::Name_idContext* ctx) override + void enterName_id(PrismParser::Name_idContext* ctx) override { auto& elem = get_elem(); elem.name = ctx->children[0]->getText(); elem.name_loc = SourceLocation{ file, ctx->getStart()->getLine(), ctx->getStart()->getCharPositionInLine() + 1 }; } - void enterShader_path(SIGParser::Shader_pathContext* ctx) override + void enterShader_path(PrismParser::Shader_pathContext* ctx) override { auto& elem = get_elem(); auto* start = ctx->getStart(); @@ -399,19 +399,19 @@ class TreeShapeListener : public SIGBaseListener } } - void enterInherit_id(SIGParser::Inherit_idContext* ctx) override + void enterInherit_id(PrismParser::Inherit_idContext* ctx) override { auto& elem = get_elem(); elem.parent.emplace_back(ctx->children[0]->getText()); } - void enterType_id(SIGParser::Type_idContext* ctx) override + void enterType_id(PrismParser::Type_idContext* ctx) override { //elem.type = ctx->children[0]->getText(); // elem.detect_type(&options); } - // virtual void enterModifier(SIGParser::ModifierContext* ctx) override { + // virtual void enterModifier(PrismParser::ModifierContext* ctx) override { // auto& elem = get_elem(); // auto& options = get_elem(); @@ -419,7 +419,7 @@ class TreeShapeListener : public SIGBaseListener //// elem.detect_type(&options); //} - void enterClass_no_template(SIGParser::Class_no_templateContext* ctx) override + void enterClass_no_template(PrismParser::Class_no_templateContext* ctx) override { auto& elem = get_elem(); @@ -427,13 +427,13 @@ class TreeShapeListener : public SIGBaseListener elem.detect_type(find_elem()); } - void enterOwner_id(SIGParser::Owner_idContext* ctx) override + void enterOwner_id(PrismParser::Owner_idContext* ctx) override { auto& elem = get_elem(); elem.owner_name = ctx->children[0]->getText(); } - void enterTemplate_id(SIGParser::Template_idContext* ctx) override + void enterTemplate_id(PrismParser::Template_idContext* ctx) override { auto& elem = get_elem(); @@ -444,14 +444,14 @@ class TreeShapeListener : public SIGBaseListener elem.detect_type(find_elem()); } - void enterValue_id(SIGParser::Value_idContext* ctx) override + void enterValue_id(PrismParser::Value_idContext* ctx) override { auto& elem = get_elem(); elem.expr = ctx->getText(); elem.is_literal = ctx->INT_SCALAR() || ctx->FLOAT_SCALAR() || ctx->bool_type(); } - void enterRaw_value(SIGParser::Raw_valueContext* ctx) override + void enterRaw_value(PrismParser::Raw_valueContext* ctx) override { auto& elem = get_elem(); std::string text = ctx->getText(); @@ -465,7 +465,7 @@ class TreeShapeListener : public SIGBaseListener // producing exactly the fields it always did. Codegen renders from terms // only when there is more than one of them, which is what makes this change // incapable of altering any existing option's generated output. - void enterCond_term(SIGParser::Cond_termContext* ctx) override + void enterCond_term(PrismParser::Cond_termContext* ctx) override { auto& elem = get_elem(); auto& term = elem.terms.emplace_back(); @@ -510,7 +510,7 @@ class TreeShapeListener : public SIGBaseListener } } - void enterPso_param_id(SIGParser::Pso_param_idContext* ctx) override + void enterPso_param_id(PrismParser::Pso_param_idContext* ctx) override { auto& elem = get_elem(); @@ -518,7 +518,7 @@ class TreeShapeListener : public SIGBaseListener elem.detect_type(find_elem()); } - void enterNode_param_id(SIGParser::Node_param_idContext* ctx) override + void enterNode_param_id(PrismParser::Node_param_idContext* ctx) override { auto& elem = get_elem(); @@ -526,7 +526,7 @@ class TreeShapeListener : public SIGBaseListener elem.detect_type(find_elem()); } - void enterArray(SIGParser::ArrayContext* ctx) override + void enterArray(PrismParser::ArrayContext* ctx) override { { auto& elem = get_elem(); @@ -539,7 +539,7 @@ class TreeShapeListener : public SIGBaseListener } } - void enterPointer(SIGParser::PointerContext* ctx) override + void enterPointer(PrismParser::PointerContext* ctx) override { { auto& elem = get_elem(); @@ -549,7 +549,7 @@ class TreeShapeListener : public SIGBaseListener } } - void enterArray_count_id(SIGParser::Array_count_idContext* ctx) override + void enterArray_count_id(PrismParser::Array_count_idContext* ctx) override { { auto& elem = get_elem(); @@ -567,7 +567,7 @@ class TreeShapeListener : public SIGBaseListener } - void enterInsert_block(SIGParser::Insert_blockContext* ctx) override + void enterInsert_block(PrismParser::Insert_blockContext* ctx) override { auto str = ctx->children[0]->getText(); auto& elem = get_elem(); @@ -577,7 +577,7 @@ class TreeShapeListener : public SIGBaseListener } - void enterShader_type(SIGParser::Shader_typeContext* ctx) override + void enterShader_type(PrismParser::Shader_typeContext* ctx) override { if (auto* shader = find_elem()) shader->name = ctx->children[0]->getText(); @@ -589,16 +589,16 @@ static Parsed parse_input(ANTLRInputStream& input, const std::string& file) Parsed parsed; CollectingErrorListener errors(file); - SIGLexer lexer(&input); + PrismLexer lexer(&input); lexer.removeErrorListeners(); lexer.addErrorListener(&errors); CommonTokenStream tokens(&lexer); - SIGParser parser(&tokens); + PrismParser parser(&tokens); parser.removeErrorListeners(); parser.addErrorListener(&errors); - SIGParser::ParseContext* tree = parser.parse(); + PrismParser::ParseContext* tree = parser.parse(); // Walking an error-recovered tree only builds a misleading partial model // for the validator to complain about; the syntax errors are the report. @@ -637,7 +637,7 @@ Parsed parse_text(const std::string& text, const std::string& file) std::vector sig_keywords() { ANTLRInputStream input(""); - SIGLexer lexer(&input); + PrismLexer lexer(&input); const auto& vocabulary = lexer.getVocabulary(); // Literal names come back quoted ("'struct'"); symbolic tokens such as ID have none. diff --git a/sources/SIGParser/Parsing.h b/sources/Prism/Parsing.h similarity index 83% rename from sources/SIGParser/Parsing.h rename to sources/Prism/Parsing.h index fe874a631..8e75a2f55 100644 --- a/sources/SIGParser/Parsing.h +++ b/sources/Prism/Parsing.h @@ -5,5 +5,5 @@ Parsed parse(std::wstring filename); // diagnostic locations. Parsed parse_text(const std::string& text, const std::string& file); -// Every keyword literal in SIG.g4, for completion. +// Every keyword literal in Prism.g4, for completion. std::vector sig_keywords(); diff --git a/sources/SIGParser/SIG.g4 b/sources/Prism/Prism.g4 similarity index 97% rename from sources/SIGParser/SIG.g4 rename to sources/Prism/Prism.g4 index 6f6a2ea70..87f775e7a 100644 --- a/sources/SIGParser/SIG.g4 +++ b/sources/Prism/Prism.g4 @@ -1,4 +1,4 @@ -grammar SIG; +grammar Prism; options { @@ -6,7 +6,7 @@ options } // FUNC_BODY is only lexable right after a function signature: `)` or -// `) : SEMANTIC`. That position is unambiguous in SIG -- struct/PSO/enum bodies +// `) : SEMANTIC`. That position is unambiguous in Prism -- struct/PSO/enum bodies // follow a name and value lists follow `=` -- so the lexer can decide it alone // by remembering the last few tokens, without splitting this into separate // lexer/parser grammars for a lexical mode. @@ -97,8 +97,8 @@ flag_value_holder: value_id; // Escape hatch: a backtick-delimited span is captured verbatim (no grammar // support for arithmetic/expressions) and pasted into the generated C++ as-is // -- e.g. [Size = `(builder.graph->get_context(). -// frame_size + ivec2(1)) / 2`]. The .sig author is responsible for writing a -// fully-qualified, valid C++ expression; SIGParser does not interpret it. +// frame_size + ivec2(1)) / 2`]. The .prism author is responsible for writing a +// fully-qualified, valid C++ expression; Prism does not interpret it. raw_value: RAWEXPR; options_assign: ASSIGN bind_option; @@ -195,7 +195,7 @@ table_stat // An HLSL function member: `[options] ret name(params) : SEMANTIC { body }`. // The body is one opaque FUNC_BODY token and the parameters are kept as source -// text; SIG only needs the signature to know the function exists. Emitted into +// text; Prism only needs the signature to know the function exists. Emitted into // the struct's generated HLSL by default ([HLSL]). function_definition : option_block*? type_id name_id OPAR function_params CPAR function_semantic? FUNC_BODY diff --git a/sources/SIGParser/REFACTOR_TODO.md b/sources/Prism/REFACTOR_TODO.md similarity index 89% rename from sources/SIGParser/REFACTOR_TODO.md rename to sources/Prism/REFACTOR_TODO.md index ff0c83e98..288a7d44a 100644 --- a/sources/SIGParser/REFACTOR_TODO.md +++ b/sources/Prism/REFACTOR_TODO.md @@ -1,6 +1,6 @@ -# SIGParser — Robustness TODO +# Prism — Robustness TODO -SIGParser's architecture is sound: ANTLR grammar → semantic model (`Parsed`) → +Prism's architecture is sound: ANTLR grammar → semantic model (`Parsed`) → jinja templates. That three-stage split is what mainstream codegen tools (FlatBuffers, protobuf) use, and it is why a new output like `context_deps.h` costs one template plus two accessors instead of surgery across the emitter. @@ -9,7 +9,7 @@ What is missing is the **middle of a normal compiler front-end**: there is no error detection, no source locations, and no validation pass. Everything below is about that gap. Nothing here is a rewrite; the parsing design stays. -The unifying symptom: **a mistake in a `.sig` file does not fail the +The unifying symptom: **a mistake in a `.prism` file does not fail the generator.** It produces wrong C++, the generator reports success, and the error surfaces later as a compile error in `autogen/` — or, worse, as behaviour that is silently wrong. Every item below shortens the distance between a @@ -20,9 +20,9 @@ mistake and the message about it. ## Status (2026-09-23) Done: items 1, 2, 4, 10, 9's private-import bug, and most of 3 plus 8's merge -collisions. A `.sig` error now prints `file(line,col): error: ...`, exits 1, +collisions. A `.prism` error now prints `file(line,col): error: ...`, exits 1, and writes nothing. Verified by regenerating with a byte-identical `autogen/` -diff, then breaking a `.sig` on purpose in each way below and confirming each +diff, then breaking a `.prism` on purpose in each way below and confirming each one is reported. Open: 3's remaining checks, 5, 6, 7, most of 8, 9's dropped-field bug. @@ -40,7 +40,7 @@ strings, checked against workdir/shaders. | Concern | Location | |---|---| -| Grammar | `SIG.g4` | +| Grammar | `Prism.g4` | | Parse entry point | `Parsing.cpp:507` (`parse()`) | | Listener / element stack | `Parsing.cpp` (`TreeShapeListener`) | | Stack accessor | `Parsing.cpp:70` (`get_elem()`) | @@ -66,7 +66,7 @@ Original notes: `parse()` (`Parsing.cpp:507`) installs no error listener and never checks `parser.getNumberOfSyntaxErrors()`. ANTLR's default listener prints to stderr -and then **recovers** — so a malformed `.sig` parses partially, the listener +and then **recovers** — so a malformed `.prism` parses partially, the listener walks a half-built tree, and the generator writes output from an incomplete model and exits 0. @@ -81,7 +81,7 @@ run looks successful, and the damage is discovered later somewhere unrelated. write a single output file. Partial regeneration of `autogen/` is worse than no regeneration, because the tree is then internally inconsistent and the next person's `git diff` is noise. -- Return a non-zero exit code so `generate_sigs.bat` / CI can detect it. +- Return a non-zero exit code so `generate_prism_parser.bat` / CI can detect it. Roughly ten lines, and it is a prerequisite for taking anything else here seriously. @@ -99,7 +99,7 @@ Original notes: `getLine()` / `getCharPositionInLine()` appear nowhere in `Parsing.cpp`. ANTLR hands these out for free on every token and they are discarded. -`have_name::source_file` stamps the owning `.sig` path onto top-level items +`have_name::source_file` stamps the owning `.prism` path onto top-level items (`Main.cpp`, in the `tag()` lambda), which is enough for an "autogenerated-from" comment but not enough to point at a mistake. @@ -107,7 +107,7 @@ hands these out for free on every token and they are discarded. base) and fill them in the listener from `ctx->getStart()`. Every diagnostic in items 3–5 is blocked on this; doing those first without locations produces error messages that say *what* is wrong but not *where*, which in a 14-file -`sigs/` directory is barely better than nothing. +`defs/` directory is barely better than nothing. --- @@ -129,13 +129,13 @@ error messages that say *what* is wrong but not *where*, which in a 14-file Still open: values of `[Always]`/`[Format]`/`[RecreateFlags]` are not checked against `ResourceFlags`/formats (they fail at C++ compile time instead, which is loud). Also, `KNOWN_CPP_SCOPES` is empty, because no current condition -names a non-SIG scope. Add to it rather than weakening the check. +names a non-Prism scope. Add to it rather than weakening the check. Three options are accepted but **read by nothing**, and are marked `unread` -in `KNOWN_OPTIONS`: `[Base]` on GraphicsPSO (`scene.sig`), `nullable` on -defines (`meshrender.sig`, `scene.sig`, `voxel.sig`), and `[Write]` on struct -fields (`vsm.sig`). Either give them a consumer or delete them from the -`.sig` files and the whitelist. +in `KNOWN_OPTIONS`: `[Base]` on GraphicsPSO (`scene.prism`), `nullable` on +defines (`meshrender.prism`, `scene.prism`, `voxel.prism`), and `[Write]` on struct +fields (`vsm.prism`). Either give them a consumer or delete them from the +`.prism` files and the whitelist. Original notes: @@ -156,12 +156,12 @@ Nothing checks that names resolve. Concrete holes, all currently silent: loses its condition and runs unconditionally. **This one can change rendering behaviour without any compile error at all.** - **`#` inside a `%{ }%` inline-HLSL block is emitted verbatim, not treated as - a `.sig` comment.** `%{ }%` content is raw HLSL text, so a `#`-prefixed line - written out of `.sig`-comment habit becomes a literal HLSL preprocessor + a `.prism` comment.** `%{ }%` content is raw HLSL text, so a `#`-prefixed line + written out of `.prism`-comment habit becomes a literal HLSL preprocessor directive (`error: invalid preprocessing directive`). Hit twice writing - `ddgi.sig`'s inline probe-coordinate helpers. `sigparser.exe` reports success + `ddgi.prism`'s inline probe-coordinate helpers. `prismc.exe` reports success either way — the failure only surfaces later, as an HLSL compile error when - the engine loads the shader, which is a confusing place to trace a `.sig` + the engine loads the shader, which is a confusing place to trace a `.prism` mistake back to. A validator could reject a `%{ }%` block whose trimmed line starts with `#` outside a string literal — cheap, and it turns a runtime-shader-load failure into a generation-time one. @@ -226,7 +226,7 @@ mechanical. Not breaking anything today; all of it is latent. -- **`value_id` alternative order** (`SIG.g4:129`) lists `ID` before +- **`value_id` alternative order** (`Prism.g4:129`) lists `ID` before `function_id`, so a bare identifier wins over a call. This is why `cond_term` has to list `function_id` ahead of `value_id` explicitly — otherwise `exists(X)` parses as an identifier followed by stray parentheses. Reordering @@ -236,7 +236,7 @@ Not breaking anything today; all of it is latent. parser grammar usually means an ambiguity is being suppressed rather than expressed. Worth understanding why it was needed; it may be masking a real ambiguity that will surface as a confusing parse later. -- **`cond_op` (`SIG.g4:66`) has no arithmetic.** Only boolean/comparison +- **`cond_op` (`Prism.g4:66`) has no arithmetic.** Only boolean/comparison operators and parentheses. See item 6. --- @@ -294,7 +294,7 @@ known-generated directories, and only files carrying the DO-NOT-EDIT banner. per pipeline's entries), naming both locations. Original note: **`Parsed::merge` (`Parsed.h:977`) does not detect collisions.** It is a plain `container.splice` (`my_container::merge`, `Parsed.h:170`), and `find()` - returns the *first* match — so two `.sig` files declaring the same struct or + returns the *first* match — so two `.prism` files declaring the same struct or pass name both end up in the list and the winner is decided by directory iteration order. Silent, and not reproducible across machines if the filesystem enumerates differently. Should be a diagnostic naming both source @@ -305,10 +305,10 @@ known-generated directories, and only files carrying the DO-NOT-EDIT banner. "as resolved" are the same object, so nothing can inspect the original form later. A separate lowered model is the conventional shape; low priority. - **`output.txt` is committed noise.** One line, containing a shell error from a - mistyped `sigparser.exe` invocation. It is git-tracked and is not an input to + mistyped `prismc.exe` invocation. It is git-tracked and is not an input to anything. Delete it. -- **`generate_sigs.bat` regenerates the ANTLR parser, not the sig output.** The - actual generator is `sigparser.exe` run from this directory. The name invites +- **`generate_prism_parser.bat` regenerates the ANTLR parser, not the sig output.** The + actual generator is `prismc.exe` run from this directory. The name invites the wrong assumption; either rename it or have it do both. - **`[Static]` vs `[Multiple]` require different C++ wiring shapes, and nothing says so.** A `[Static]` `PassNode` gets a generated @@ -321,8 +321,8 @@ known-generated directories, and only files carrying the DO-NOT-EDIT banner. only way to find out is to already know to go read `PSSM_Cascade`. Worth a line in whichever doc explains `[Multiple]`, or a generated comment in the pass header pointing at the reference example. -- **A regen run doesn't say what changed.** `sigparser.exe`'s output lists the - `.sig` files it read, not which output files were added, removed, or +- **A regen run doesn't say what changed.** `prismc.exe`'s output lists the + `.prism` files it read, not which output files were added, removed, or modified — the only way to know whether `generate_project.bat` is needed (new files) versus not (content-only changes) is to `git status` three separate `autogen/` directories by hand after every run. A three-line @@ -334,7 +334,7 @@ known-generated directories, and only files carrying the DO-NOT-EDIT banner. ## 9. Confirmed template bugs producing silently-wrong output on valid input Distinct from item 3's "no validation pass" (which is about *rejecting bad -`.sig` input*): these are cases where the `.sig` input is completely valid and +`.prism` input*): these are cases where the `.prism` input is completely valid and the generator still emits incorrect C++, every time, unconditionally. Both were hit — repeatedly — implementing the DDGI probe-volume feature. @@ -353,7 +353,7 @@ were hit — repeatedly — implementing the DDGI probe-volume feature. The missing `export` breaks every other module that expects `PSOS::X`/ `RT::X` through `import HAL;` (e.g. `Context.ixx`); the fused newline swallows the first import into the comment, dropping that one symbol - entirely. This reproduced on **every single `sigparser.exe` run** across an + entirely. This reproduced on **every single `prismc.exe` run** across an entire session (15+ regenerations) — it is not intermittent, it is the template's unconditional output. Needs a mechanical fix in whichever jinja template emits this block (adds `export ` to each `import :Autogen.(PSO|RT| @@ -374,11 +374,11 @@ were hit — repeatedly — implementing the DDGI probe-volume feature. struct's field list (possibly the same family as the list-accumulation bugs [[project_jinja2cpp_issues]] already tracks; worth checking if this is one of the same six). Confirmed by diffing generated output with and - without the leading field, on an otherwise-identical `.sig` struct. + without the leading field, on an otherwise-identical `.prism` struct. Both were found by trial and error during feature work, not by inspecting the templates — a snapshot-based template test suite (generate a small fixture -`.sig` covering "nested struct, resource-only field" and "PSO import block", +`.prism` covering "nested struct, resource-only field" and "PSO import block", assert exact output) would have caught both at the time the templates were last touched, rather than at the time some unrelated feature happened to exercise the exact shape that triggers them. @@ -390,8 +390,8 @@ exercise the exact shape that triggers them. `assign_rtx_ids()` (`Main.cpp`) numbers `RaytraceRaygen`/`RaytracePass` per bound `RaytracePSO` over the merged model, which is exactly the Typelist index that `RTX.ixx` static_asserts against. Verified by moving `DDGIProbeTrace` -into `ddgi.sig`: its Typelist position and ID both became 0, and every other -raygen shifted consistently. The raygens are still all in `raytracing.sig`, +into `ddgi.prism`: its Typelist position and ID both became 0, and every other +raygen shifted consistently. The raygens are still all in `raytracing.prism`, but they no longer need to be. Original notes: @@ -402,9 +402,9 @@ the same *auto-assigned numeric ID* because the counter that assigns it resets per source file instead of being global across the merged model. Concretely: `RaytraceRaygen::ID` is assigned sequentially within whichever -`.sig` file declares it. A `RaytraceRaygen` declared in a new file (`ddgi.sig`) +`.prism` file declares it. A `RaytraceRaygen` declared in a new file (`ddgi.prism`) got `ID = 0`, colliding with an unrelated pre-existing raygen (`Shadow`, -`ID = 0` in `raytracing.sig`) that happens to be the first one declared in +`ID = 0` in `raytracing.prism`) that happens to be the first one declared in its own file. Both compile silently; the collision only surfaces via `RTX.ixx`'s `dispatch()` `static_assert(generator == T::ID)` failing for **every** RTX pass sharing that RTPSO, not just the newly-added one — because diff --git a/sources/SIGParser/Validate.cpp b/sources/Prism/Validate.cpp similarity index 98% rename from sources/SIGParser/Validate.cpp rename to sources/Prism/Validate.cpp index c8a567abf..c72f02168 100644 --- a/sources/SIGParser/Validate.cpp +++ b/sources/Prism/Validate.cpp @@ -12,7 +12,7 @@ namespace // // Every name here must be read by Main.cpp, Parsed.cpp or a template. Add // to it in the same change that adds the consumer. The exceptions are - // marked "unread": used in .sig files as annotations, consumed by nothing. + // marked "unread": used in .prism files as annotations, consumed by nothing. const std::set PSO_OPTIONS = { "Template", "ExcludeVulkan" }; const std::set RESOURCE_FIELD_OPTIONS = { "Always", "ArrayCount", "Format", "MipCount", "Optional", "PrevFor", "Recreate", "RecreateFlags", @@ -182,7 +182,7 @@ namespace // Mirrors CONDITION_OPTIONS in Main.cpp. const std::set CONDITION_OPTIONS = { "SetupCondition", "RenderCondition", "Optional" }; - // Qualified names in a condition that are neither a SIG struct nor a SIG + // Qualified names in a condition that are neither a Prism struct nor a Prism // enum and are known to be valid C++ in the generated pass code. const std::set KNOWN_CPP_SCOPES = { }; @@ -267,13 +267,13 @@ namespace check_condition(parsed, opt, owner); // resolve_size_expr turns Owner::field into get_context().field - // unconditionally, so the owner has to be a SIG struct. + // unconditionally, so the owner has to be a Prism struct. if (const option* size = p.find_option("Size")) { const auto& atom = size->value_atom; if (!atom.is_raw && !atom.is_literal && !atom.owner_name.empty() && !find_table_field(parsed, atom.owner_name, atom.expr)) - diagnostics().error(*size, std::format("[Size] on '{}.{}': '{}::{}' is not a field of a SIG struct", + diagnostics().error(*size, std::format("[Size] on '{}.{}': '{}::{}' is not a field of a Prism struct", owner.name, p.name, atom.owner_name, atom.expr)); } @@ -315,7 +315,7 @@ namespace } // %{ }% blocks and function bodies are pasted into HLSL verbatim, so a - // `# note` written out of .sig habit becomes an invalid preprocessor + // `# note` written out of .prism habit becomes an invalid preprocessor // directive. Without this the error surfaces only when the engine compiles // the shader at load time. void check_hlsl_text(const std::string& text, const SourceLocation& start, const std::string& owner_name) diff --git a/sources/SIGParser/Validate.h b/sources/Prism/Validate.h similarity index 87% rename from sources/SIGParser/Validate.h rename to sources/Prism/Validate.h index 7a1a69a77..e64daf072 100644 --- a/sources/SIGParser/Validate.h +++ b/sources/Prism/Validate.h @@ -12,5 +12,5 @@ const std::set& known_options(const std::string& kind); // Every declaration kind that accepts `option_name`. std::vector option_kinds(const std::string& option_name); -// workdir/shaders of the checkout a .sig file belongs to; empty if not found. +// workdir/shaders of the checkout a .prism file belongs to; empty if not found. std::filesystem::path shaders_root(const std::string& sig_file); diff --git a/sources/SIGParser/antlr-4.11.1-complete.jar b/sources/Prism/antlr-4.11.1-complete.jar similarity index 100% rename from sources/SIGParser/antlr-4.11.1-complete.jar rename to sources/Prism/antlr-4.11.1-complete.jar diff --git a/sources/SIGParser/sigs/AssetRenderer.sig b/sources/Prism/defs/AssetRenderer.prism similarity index 97% rename from sources/SIGParser/sigs/AssetRenderer.sig rename to sources/Prism/defs/AssetRenderer.prism index 0bace6291..1196d42fd 100644 --- a/sources/SIGParser/sigs/AssetRenderer.sig +++ b/sources/Prism/defs/AssetRenderer.prism @@ -8,7 +8,7 @@ struct TextureRenderer [RunAlways] PassNode AssetGBuffer { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment on why. GBufferViewDesc::actualize() (Context.ixx) is a # template on `auto& context`, so it works unmodified on `data` directly # once these are plain top-level fields, no `.gbuffer` accessor needed. diff --git a/sources/SIGParser/sigs/BlueNoise.sig b/sources/Prism/defs/BlueNoise.prism similarity index 100% rename from sources/SIGParser/sigs/BlueNoise.sig rename to sources/Prism/defs/BlueNoise.prism diff --git a/sources/SIGParser/sigs/DenoiserShadow.sig b/sources/Prism/defs/DenoiserShadow.prism similarity index 100% rename from sources/SIGParser/sigs/DenoiserShadow.sig rename to sources/Prism/defs/DenoiserShadow.prism diff --git a/sources/SIGParser/sigs/FSR.sig b/sources/Prism/defs/FSR.prism similarity index 100% rename from sources/SIGParser/sigs/FSR.sig rename to sources/Prism/defs/FSR.prism diff --git a/sources/SIGParser/sigs/FrameData.sig b/sources/Prism/defs/FrameData.prism similarity index 96% rename from sources/SIGParser/sigs/FrameData.sig rename to sources/Prism/defs/FrameData.prism index 242794927..f439afe8f 100644 --- a/sources/SIGParser/sigs/FrameData.sig +++ b/sources/Prism/defs/FrameData.prism @@ -3,7 +3,7 @@ # ReflectionRTX-exclusive -- MyMissShader (raytracing.hlsl) services all of # them through one shared miss shader with no way to know which). Real SIG # enum instead of a raw uint + hand-typed magic numbers, same reasoning -# DDGIControlFlags (ddgi.sig) already established -- explicit power-of-two +# DDGIControlFlags (ddgi.prism) already established -- explicit power-of-two # values since these combine as a bitmask, not picked one-at-a-time. enum RTXDebugFlags { @@ -60,7 +60,7 @@ struct FrameInfo # Hi-Z pyramid for per-meshlet occlusion (built in MeshRenderer.cpp). # Whether it is USED is a PSO permutation, not a runtime flag -- see - # GBufferDraw's HiZOcclusion define in scene.sig. + # GBufferDraw's HiZOcclusion define in scene.prism. # # [Auto]: passes that render without a Hi-Z (the asset thumbnail renderer, # AssetGBuffer) leave this unset, and the mesh shader samples it diff --git a/sources/SIGParser/sigs/MipMapping.sig b/sources/Prism/defs/MipMapping.prism similarity index 100% rename from sources/SIGParser/sigs/MipMapping.sig rename to sources/Prism/defs/MipMapping.prism diff --git a/sources/SIGParser/sigs/SS_Shadow.sig b/sources/Prism/defs/SS_Shadow.prism similarity index 100% rename from sources/SIGParser/sigs/SS_Shadow.sig rename to sources/Prism/defs/SS_Shadow.prism diff --git a/sources/SIGParser/sigs/UpscalingDLSS.sig b/sources/Prism/defs/UpscalingDLSS.prism similarity index 99% rename from sources/SIGParser/sigs/UpscalingDLSS.sig rename to sources/Prism/defs/UpscalingDLSS.prism index 2b5cd80e4..10d45bf2f 100644 --- a/sources/SIGParser/sigs/UpscalingDLSS.sig +++ b/sources/Prism/defs/UpscalingDLSS.prism @@ -7,7 +7,7 @@ enum UpscalerType # Mirrors UpscalingDLSS.ixx's g_upscaler_type/g_upscaling_enabled globals -- # synced there every frame (main.cpp's generate()), so [SetupCondition=...] -# on passes like NRD_GBufferPack/NRD_IndirectCombine (nrd_sig_test.sig) can +# on passes like NRD_GBufferPack/NRD_IndirectCombine (nrd_sig_test.prism) can # read the live selection via get_context() # instead of the raw global. That matters specifically for a [SetupCondition]/ # [RenderCondition]/[RunAlways] pass: its setup() body is generated into diff --git a/sources/SIGParser/sigs/UpscalingDLSSRR.sig b/sources/Prism/defs/UpscalingDLSSRR.prism similarity index 96% rename from sources/SIGParser/sigs/UpscalingDLSSRR.sig rename to sources/Prism/defs/UpscalingDLSSRR.prism index 9c44c8d5b..ace78159c 100644 --- a/sources/SIGParser/sigs/UpscalingDLSSRR.sig +++ b/sources/Prism/defs/UpscalingDLSSRR.prism @@ -8,7 +8,7 @@ # integrations wouldn't have: Albedo, NormalRoughness, SpecularHitDistance, # SpecularAlbedo (this engine tags hit-distance instead of the doc's # alternative, SpecularMotionVectors, since RTXReflectionNoise already has -# it -- see ReflectionRTX, voxel.sig). SpecularAlbedo (F0) is derived by +# it -- see ReflectionRTX, voxel.prism). SpecularAlbedo (F0) is derived by # NormalRoughnessRepack below from GBuffer_Albedo's rgb=albedo/w=metallic # via lerp(0.04, albedo, metallic). # @@ -17,7 +17,7 @@ # (see UpscalingDLSSRR.cpp's PassDefault::render), # not a shader this engine dispatches directly. -# Decodes GBuffer_Normals' best-fit-compressed normal (see FrameData.sig's +# Decodes GBuffer_Normals' best-fit-compressed normal (see FrameData.prism's # compress_normals()) back to an unpacked world-space normal, and repacks it # with roughness into one Streamline-compatible buffer for the # kBufferTypeNormalRoughness tag -- Streamline can't consume the compressed @@ -25,7 +25,7 @@ # the same dispatch, since both are per-pixel GBuffer-derived and RR wants # them together. Both are pure GBuffer-derived material properties, not # reflection-specific, so this only gates on DLSS-RR being available -- see -# ReflectionRTX (voxel.sig) for the actual reflection-signal input, gated +# ReflectionRTX (voxel.prism) for the actual reflection-signal input, gated # separately on RTX support. [Bind = DefaultLayout::Instance2] struct NormalRoughnessRepackParams @@ -71,7 +71,7 @@ PassNode UpscalingDLSSRR [Always = Read | ExclusiveRead] Texture SpecularAlbedo; [Always = Read | ExclusiveRead] Texture RTXReflectionNoise; - # ColorIn actually comes from here (RTXCombine's output, voxel.sig), not + # ColorIn actually comes from here (RTXCombine's output, voxel.prism), not # from ResultTexture below -- see UpscalingDLSSRR.cpp's render(). The # [Recreate] pairing on ResultTexture is still needed to produce # ResultTextureNew (the pass's actual output), so that field stays even diff --git a/sources/SIGParser/sigs/WorkGraph.sig b/sources/Prism/defs/WorkGraph.prism similarity index 100% rename from sources/SIGParser/sigs/WorkGraph.sig rename to sources/Prism/defs/WorkGraph.prism diff --git a/sources/SIGParser/sigs/brdf.sig b/sources/Prism/defs/brdf.prism similarity index 100% rename from sources/SIGParser/sigs/brdf.sig rename to sources/Prism/defs/brdf.prism diff --git a/sources/SIGParser/sigs/ddgi.sig b/sources/Prism/defs/ddgi.prism similarity index 97% rename from sources/SIGParser/sigs/ddgi.sig rename to sources/Prism/defs/ddgi.prism index f44f6ccc8..33392a5b1 100644 --- a/sources/SIGParser/sigs/ddgi.sig +++ b/sources/Prism/defs/ddgi.prism @@ -5,7 +5,7 @@ # *previous frame* irradiance back in as incoming light when relighting it # (talk: "using values from the previous frame ... multi-bounce global # illumination"), instead of tracing more bounces per pixel per frame -- -# IndirectRTX (voxel.sig) still does exactly one ray per pixel. +# IndirectRTX (voxel.prism) still does exactly one ray per pixel. # # v1 scaffold: 5-cascade grid (each level double the previous one's probe # spacing, all centered/recentered on the camera, same shape AC Shadows' @@ -16,7 +16,7 @@ # # Cascades share ONE physical atlas per texture (5x as wide) and ONE probe # buffer (5x as many entries), using this engine's [Multiple=N] PassNode -# mechanism (same one PSSM_Cascade, pssm.sig, uses for shadow cascades): +# mechanism (same one PSSM_Cascade, pssm.prism, uses for shadow cascades): # DDGIProbeSelect/Trace/Convolve below are each [Multiple=5], instance 0 # creates the shared (wide) resources and every instance just needs them # (see pass.jinja's own comment on [Optional] + [Size] together, quoted at @@ -73,7 +73,7 @@ enum DDGIOcclusionMode } # Single-cascade grid size, shared between DDGI.ixx's grid bookkeeping and -# every [Size=...] below -- one source of truth, same reasoning as vsm.sig's +# every [Size=...] below -- one source of truth, same reasoning as vsm.prism's # MaxLevels/VSM_PagesPerLevelSide. 4x/dimension over the original v1 scaffold # (was 16x8x16) -- affordable now that residency culling (DDGIProbeResidencyMark) # means most of this grid is never actually traced/convolved, only stored. @@ -124,12 +124,12 @@ const DDGI_ProbeRayCount = 32; # Per-frame probe-update budget (DDGI.ixx's Variable probes_per_frame_budget # mirrors into DDGISelectors below); this constant is only the storage-independent # upper bound used to size nothing in particular yet -- kept for parity with -# vsm.sig's MaxDispatchEntries pattern in case a future selection pass needs a +# vsm.prism's MaxDispatchEntries pattern in case a future selection pass needs a # GPU-side counted append buffer sized off it. const DDGI_MaxProbesPerFrame = `Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeCountY`; # Mirrored once per frame by DDGI::update_frame() (DDGIGraph.cpp), same -# reasoning as VoxelInfo (voxel.sig): grid_min is the world-space corner of +# reasoning as VoxelInfo (voxel.prism): grid_min is the world-space corner of # probe (0,0,0), probe_spacing the world-space distance between adjacent # probes along each axis. rays_per_probe.x is the real per-probe ray count # now (DDGI_ProbeRayCount, mirrored rather than read directly from HLSL's @@ -234,7 +234,7 @@ struct DDGIProbes # Duplicated from DDGIInfo::probe_counts (not read through it) -- a # nested [Bind]-struct field can't reach a sibling field of its parent, # same reasoning VoxelTilingParams' own voxels_per_tile duplication - # follows (voxel.sig). Also works around a SIGParser codegen bug: a + # follows (voxel.prism). Also works around a Prism codegen bug: a # nested struct whose only field is a StructuredBuffer (no plain field # ahead of it) silently drops that field from the generated HLSL table # entirely -- confirmed by removing this field and finding `probes` @@ -374,7 +374,7 @@ struct DDGIProbes # ddgi_update_selectors() -- no owning DDGI instance exists yet, so these # are free-standing Meyer's-singleton Variables, same pattern # GBufferDownsampler's own g_roughness_threshold/g_metallic_threshold use, -# VoxelGIGraph.cpp) -- same reasoning as VoxelGISelectors (voxel.sig): the +# VoxelGIGraph.cpp) -- same reasoning as VoxelGISelectors (voxel.prism): the # generated setups below are static functions with no instance to reach. struct DDGISelectors { @@ -484,7 +484,7 @@ ComputePSO DDGIProbeConvolve # DDGIProbeTrace below reads the same buffer to know which ones are due. # # [Multiple = 5]: one instance per cascade level (DDGI_CascadeCount), same -# mechanism PSSM_Cascade (pssm.sig) uses for shadow cascades -- NOT [Static] +# mechanism PSSM_Cascade (pssm.prism) uses for shadow cascades -- NOT [Static] # because [Multiple] needs runtime-wired render_funcs[N] (DDGI.ixx's # ddgi_register_passes, PSSM.ixx's own template ctor is the reference), not # a single generated PassDefault::render. Each instance's data.pass_index @@ -494,7 +494,7 @@ ComputePSO DDGIProbeConvolve # DDGI_ProbeVisibility, even though this pass's own shader never touches # them -- DDGIProbeTrace (below) needs to read them and DDGIProbeConvolve # (further below) needs to write them, and setup() resolves need()/create() -# calls strictly in this frame's pipeline listing order (test.sig), not by a +# calls strictly in this frame's pipeline listing order (test.prism), not by a # data-flow topological sort. Since DDGIProbeTrace runs BEFORE # DDGIProbeConvolve, having Convolve be the creator made DDGIProbeTrace's own # need() assert-fail (ASSERT(exists(result)), FrameGraph.Base.ixx) -- @@ -525,7 +525,7 @@ PassNode DDGIProbeSelect [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] StructuredBuffer DDGI_ProbeResidency; - # One DispatchRaysArguments (raytracing.sig) record per cascade -- the + # One DispatchRaysArguments (raytracing.prism) record per cascade -- the # GPU-driven indirect-DispatchRays args buffer DDGIProbeDispatchArgsBuild # (below) fills and DDGIProbeTrace's own ExecuteIndirect reads. Same # sole-creator reasoning as the other shared buffers above. @@ -658,7 +658,7 @@ PassNode DDGIProbeResidencyMark } # Packs this cascade's DDGI_DispatchRaysArgs record for DDGIProbeTrace's -# ExecuteIndirect (DispatchRaysArgsBuild PSO, raytracing.sig). Width is now +# ExecuteIndirect (DispatchRaysArgsBuild PSO, raytracing.prism). Width is now # read from DDGI_CompactedProbeCount (DDGIProbeResidencyMark, above) instead # of the fixed atlas size -- a genuine GPU-computed dispatch size, though # still numerically identical to the old fixed size today since residency @@ -698,11 +698,11 @@ PassNode DDGIProbeDispatchArgsBuild PassNode DDGIProbeTrace { # Read-only dependency on PreScene so the RTX BVH is built/updated before - # tracing -- same pattern RTXColorPass (raytracing.sig) uses. + # tracing -- same pattern RTXColorPass (raytracing.prism) uses. [Always = Read] StructuredBuffer scene; # Force the sky chain to run first so FrameInfo.GetSky() is populated for # the miss shader -- same pattern ReflectionRTXHalf/IndirectRTXHalf use - # (voxel.sig). + # (voxel.prism). [Always = Read] TextureCube sky_cubemap_filtered; [Always = Read] StructuredBuffer DDGI_Probes; [Always = Read] Texture DDGI_ProbeIrradiance; @@ -710,7 +710,7 @@ PassNode DDGIProbeTrace [Always = Read] StructuredBuffer DDGI_ProbeResidency; # Not bound to the raygen shader -- read directly as a raw HAL::Resource # by this pass's own render() for ExecuteIndirect (DispatchRaysArgsBuild, - # raytracing.sig, populates it earlier this frame). Declared here purely + # raytracing.prism, populates it earlier this frame). Declared here purely # so FrameGraph orders DDGIProbeDispatchArgsBuild before this pass and # tracks the buffer's UAV-write -> indirect-arg-read hazard. [Always = Read] StructuredBuffer DDGI_DispatchRaysArgs; @@ -726,7 +726,7 @@ PassNode DDGIProbeTrace # resident and silently drops out from under whatever's still reading it. [Always = UnorderedAccess] StructuredBuffer DDGI_ProbeResidencyPending; - # Probe rays shade hits with VSMShadowLookupData (vsm.sig) instead of a + # Probe rays shade hits with VSMShadowLookupData (vsm.prism) instead of a # recursive shadow ray, so VSM has to run whenever this pass does. [Always = Read] Texture VSM_Atlas; [Always = Read] Texture VSM_PageTable; @@ -817,7 +817,7 @@ ComputePSO DDGIDebug # camera, see DDGIDebugData's own comment), with a manual (shader-side) # depth comparison against GBuffer_DepthMips standing in for real hardware # depth testing. Placed after the NRD/RTXCombine/ReflCombine chain in -# test.sig's MainPipeline so ResultTexture already holds the fully +# test.prism's MainPipeline so ResultTexture already holds the fully # composited lit scene, and before Sky/SMAA/FSR so post-effects don't # resample a slightly-stale image. [Static] @@ -838,7 +838,7 @@ struct DDGIIndirectDebugData # One DDGIInfo per cascade (not an array -- fixed-size arrays of a # nested [Bind] struct aren't an established pattern in this codebase; # named fields mirror Camera/prevCamera's own two-instance precedent, - # FrameData.sig, just extended to 5). cascade0 is finest/smallest + # FrameData.prism, just extended to 5). cascade0 is finest/smallest # spacing; ddgi_sample_irradiance_cascaded (ddgi_sample.hlsl) tries them # in that order and uses the first one whose grid actually contains the # shading point. @@ -852,7 +852,7 @@ struct DDGIIndirectDebugData Texture2DArray probe_irradiance; Texture2DArray probe_visibility; # Gates ddgi_sample_irradiance's trilinear blend -- see - # VoxelOutput::ddgi_residency's own comment (voxel.sig). + # VoxelOutput::ddgi_residency's own comment (voxel.prism). StructuredBuffer probe_residency; # Written at this pass's own per-pixel hit point -- see the PassNode's # own comment (below) on why this view marks residency itself instead of @@ -905,7 +905,7 @@ PassNode DDGIIndirectDebug # without this, writing it here would keep this debug pass (and everything # it reads) alive every frame, even when nothing displays DDGIIndirectDebug. # Single bracket, not two -- a second separate [...] group on the same - # field silently lost its options to a SIGParser codegen bug (traced via + # field silently lost its options to a Prism codegen bug (traced via # the FrameGraph debugger's enablement-chain view: this pass was showing # as enabled by its own write to this buffer, meaning SkipEnablement # never made it into the generated builder.need() call at all). diff --git a/sources/SIGParser/sigs/defaultlayout.sig b/sources/Prism/defs/defaultlayout.prism similarity index 96% rename from sources/SIGParser/sigs/defaultlayout.sig rename to sources/Prism/defs/defaultlayout.prism index cd7ae51b9..95cbad647 100644 --- a/sources/SIGParser/sigs/defaultlayout.sig +++ b/sources/Prism/defs/defaultlayout.prism @@ -30,7 +30,7 @@ layout DefaultLayout: FrameLayout slot WorkGR_ClassifyPixels_NodeEmulation; slot WorkGR_Shadows_NodeEmulation; - # VSMShadowLookupData (vsm.sig). Its own slot because the reader is the + # VSMShadowLookupData (vsm.prism). Its own slot because the reader is the # shared RTX hit shader, and every Instance0-5 slot is already taken # inside that one library. slot VSMShadow; diff --git a/sources/SIGParser/sigs/font_render.sig b/sources/Prism/defs/font_render.prism similarity index 100% rename from sources/SIGParser/sigs/font_render.sig rename to sources/Prism/defs/font_render.prism diff --git a/sources/SIGParser/sigs/helpers.sig b/sources/Prism/defs/helpers.prism similarity index 100% rename from sources/SIGParser/sigs/helpers.sig rename to sources/Prism/defs/helpers.prism diff --git a/sources/SIGParser/sigs/material.sig b/sources/Prism/defs/material.prism similarity index 100% rename from sources/SIGParser/sigs/material.sig rename to sources/Prism/defs/material.prism diff --git a/sources/SIGParser/sigs/material_preview.sig b/sources/Prism/defs/material_preview.prism similarity index 96% rename from sources/SIGParser/sigs/material_preview.sig rename to sources/Prism/defs/material_preview.prism index 79dc01e10..e5366cf64 100644 --- a/sources/SIGParser/sigs/material_preview.sig +++ b/sources/Prism/defs/material_preview.prism @@ -19,7 +19,7 @@ struct MaterialPreviewInfo # [Template]: real per-material source is always built manually (see # MaterialPreviewSession::rebuild_pso) -- skip the unconditional startup -# build the .sig system otherwise gives every PSO, so material_preview.hlsl's +# build the .prism system otherwise gives every PSO, so material_preview.hlsl's # placeholder MaterialCB never actually needs to compile into anything real. [Template] ComputePSO MaterialPreview diff --git a/sources/SIGParser/sigs/meshrender.sig b/sources/Prism/defs/meshrender.prism similarity index 98% rename from sources/SIGParser/sigs/meshrender.sig rename to sources/Prism/defs/meshrender.prism index 2ed20144a..1517634ca 100644 --- a/sources/SIGParser/sigs/meshrender.sig +++ b/sources/Prism/defs/meshrender.prism @@ -58,7 +58,7 @@ struct RaytraceInstanceInfo # RayQuery reach GetSceneData().GetMaterials()[material_id] from # InstanceID() alone, the same way the main render path already reaches # it from a mesh index. Needed because per-material hit-group shader- - # table binding (see raytracing.sig's ColorShadowPass) isn't reachable + # table binding (see raytracing.prism's ColorShadowPass) isn't reachable # from inline ray tracing at all -- this is the one path that is. uint material_id; } diff --git a/sources/SIGParser/sigs/nrd_sig_test.sig b/sources/Prism/defs/nrd_sig_test.prism similarity index 98% rename from sources/SIGParser/sigs/nrd_sig_test.sig rename to sources/Prism/defs/nrd_sig_test.prism index b6d8acb7f..f2847fc1a 100644 --- a/sources/SIGParser/sigs/nrd_sig_test.sig +++ b/sources/Prism/defs/nrd_sig_test.prism @@ -35,7 +35,7 @@ ComputePSO NRD_Clear_Test # Item 7 (see [[project-nrd-integration]]): the rest of NRD's SIGMA_SHADOW + # REBLUR_DIFFUSE kernel set, ported to SIG the same way as Clear_Constants -# above -- one .sig struct + ComputePSO + shim per kernel/permutation. +# above -- one .prism struct + ComputePSO + shim per kernel/permutation. # # Resource lists below are for this instance's ACTUAL compiled permutation # only (NRD_SIGNAL=DIFF, NRD_MODE=RADIANCE, TRANSLUCENCY=0 -- REBLUR_DIFFUSE @@ -226,7 +226,7 @@ ComputePSO NRD_SIGMA_SplitScreen # kernels (Validation embeds this plus 2 extra uint fields of its own, see # REBLUR_ValidationResources below). Embedded (not [Bind] on its own) into # each REBLUR_*Resources struct below, same plain-struct-composition pattern -# as Frustum/Camera in FrameData.sig -- accessed as +# as Frustum/Camera in FrameData.prism -- accessed as # resources.GetSharedConstants().GetGWorldToClip() etc from C++. Field name # is "sharedConstants", not "shared" -- "shared" is an HLSL storage-class # keyword (groupshared-adjacent), and DXC misparses "REBLURSharedConstants @@ -901,12 +901,12 @@ struct IndirectGISelectors # candidates directly there instead, see RTXCombine's own comment), so # there's no reason to run this or NRD_REBLUR_Execute (its only real # consumer, same gate) while DLSS-RR is selected. All three conditions read -# from Table:: contexts (UpscalingDLSS.sig/raytracing.sig) rather than raw +# from Table:: contexts (UpscalingDLSS.prism/raytracing.prism) rather than raw # globals -- see UpscalerSelectors' own comment for why that matters here. [SetupCondition = UpscalerSelectors::upscaler_type != UpscalerType::DLSSRR && RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available] PassNode NRD_GBufferPack { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. GBufferViewDesc::actualize() (Context.ixx) works unmodified # on `data` directly once these are top-level. [Always = Read] Texture GBuffer_Albedo; @@ -966,7 +966,7 @@ PassNode NRD_REBLUR_Execute [Always = Read] Texture NRD_NormalRoughness; [Always = Read] Texture NRD_Mv; # Pre-packed AND pre-selected by NRD_GBufferPack now -- it resolves - # g_indirect_source/g_reflection_source itself (see its own .sig + # g_indirect_source/g_reflection_source itself (see its own .prism # comment) and packs exactly the chosen candidate, so this is always the # right one to read unconditionally; no A/B left to do here. [Always = Read] Texture NRD_DiffuseRadianceHitDist; @@ -979,9 +979,9 @@ PassNode NRD_REBLUR_Execute # Real per-frame SIGMA_SHADOW execution -- denoises whichever raw penumbra # signal matches the selected shadow source (see [[project-nrd-integration]]): -# ShadowRTX's raw distanceToOccluder (voxel.sig's VoxelOutput::shadow_noise -> +# ShadowRTX's raw distanceToOccluder (voxel.prism's VoxelOutput::shadow_noise -> # VSM_ShadowNoise) when RTXReference is selected, or VSM_ShadowResolve's own -# raw blocker-search distance (VSM_PCSS_ShadowNoise, vsm.sig) when VSM is +# raw blocker-search distance (VSM_PCSS_ShadowNoise, vsm.prism) when VSM is # selected -- the latter is diagnostic-only, feeding NRD_ShadowCombine # nothing (that pass stays gated to RTXReference only, see its own PassNode # comment), purely so VSM's own signal can be inspected/compared denoised. @@ -1016,7 +1016,7 @@ PassNode NRD_SIGMA_Execute # Exactly one of these two exists/is linked each frame, per # VSMSelectors::shadow_source -- see this PassNode's own comment above. # exists() guards them (VSM_DepthAnalysis's/UI_PreDraw's own comments, - # vsm.sig/ui.sig -- CLAUDE.md's "FrameGraph: A/B resource selection") + # vsm.prism/ui.prism -- CLAUDE.md's "FrameGraph: A/B resource selection") # since each producer's own gate (ShadowRTX/VSM_ShadowResolve) is a # separate, independently-evaluated condition, not guaranteed identical # to the copy here. @@ -1057,7 +1057,7 @@ ComputePSO NRD_IndirectCombine [SetupCondition = UpscalerSelectors::upscaler_type != UpscalerType::DLSSRR] PassNode NRD_IndirectCombine { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -1098,7 +1098,7 @@ ComputePSO NRD_ShadowCombine [SetupCondition = UpscalerSelectors::upscaler_type != UpscalerType::DLSSRR && RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available && VSMSelectors::shadow_source == ShadowSource::RTXReference] PassNode NRD_ShadowCombine { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; diff --git a/sources/SIGParser/sigs/pssm.sig b/sources/Prism/defs/pssm.prism similarity index 98% rename from sources/SIGParser/sigs/pssm.sig rename to sources/Prism/defs/pssm.prism index 5410d0186..8c01a29f8 100644 --- a/sources/SIGParser/sigs/pssm.sig +++ b/sources/Prism/defs/pssm.prism @@ -152,7 +152,7 @@ ComputePSO GBufferDownsample # template on `auto& context` -- it never actually required the View # wrapper, only field names matching `GBuffer_*`, so every call site just # changed from `actualize(data.gbuffer)` to `actualize(data)`. `struct -# GBuffer` (scene.sig, the [Bind]+[RenderTarget] HLSL Table used for +# GBuffer` (scene.prism, the [Bind]+[RenderTarget] HLSL Table used for # shader-visible sampling inside other Bind structs like PSSMLighting) is a # completely different, still-live SIG entity -- unrelated to this removed # PassView, and untouched by this change. @@ -164,7 +164,7 @@ ComputePSO GBufferDownsample # a plain int, not a SIG field). [Multiple=6] below is deliberately a # different, larger literal (headroom for the pipeline's own Names[]/ # setup_funcs[] arrays; the pipeline.jinja-generated add_passes() already -# skips any index whose setup_funcs[i] was never assigned) -- SIGParser needs +# skips any index whose setup_funcs[i] was never assigned) -- Prism needs # [Multiple] to be a literal it can loop over at generation time, so it can't # itself reference this constant. const PSSM_RendersSize = 5; diff --git a/sources/SIGParser/sigs/raytracing.sig b/sources/Prism/defs/raytracing.prism similarity index 95% rename from sources/SIGParser/sigs/raytracing.sig rename to sources/Prism/defs/raytracing.prism index 03b62dcd5..a09568596 100644 --- a/sources/SIGParser/sigs/raytracing.sig +++ b/sources/Prism/defs/raytracing.prism @@ -21,7 +21,7 @@ struct RenderDeviceCapabilities # writes into. Field names/types here don't need to match the C++ side # (they never do for [shader_only] IndirectCommand types, see # DispatchArguments/DispatchMeshArguments above this file's own sibling -# meshrender.sig), only total byte layout does -- three GPU-address ranges +# meshrender.prism), only total byte layout does -- three GPU-address ranges # (uint2 = 8 bytes, matching a UINT64) then Width/Height/Depth, PLUS this # struct's trailing _pad: the 11 uint2 + 3 uint fields above sum to exactly # 100 bytes, tightly packed (HLSL has no C++-style trailing struct-size @@ -67,7 +67,7 @@ struct DispatchRaysArguments # read from a GPU-side count (compacted_count[count_index]) rather than a # CPU-supplied literal -- that's the whole point of going through # ExecuteIndirect: the launch size can depend on something the GPU computed -# this frame (e.g. DDGI's residency stream compaction, ddgi.sig) without a +# this frame (e.g. DDGI's residency stream compaction, ddgi.prism) without a # CPU readback. width_multiplier scales that count up to a thread count for # a caller like DDGI that needs several rays per compacted list entry # (texel_size*texel_size per probe); pass 1 for a caller whose count IS the @@ -90,7 +90,7 @@ struct DispatchRaysArgsBuildData StructuredBuffer compacted_count; # Which element of `args` this call writes -- callers sharing one args # buffer across several cascades/variants (DDGIProbeDispatchArgsBuild, - # ddgi.sig) each write their own slice of it. + # ddgi.prism) each write their own slice of it. uint dest_index; RWStructuredBuffer args; } @@ -177,7 +177,7 @@ struct RayPayload # Opt-in per-ray shadow technique (see [[project-ddgi]] planning notes): # 0 (default, set by init() below) = MyClosestHitShader's own real # recursive shadow ray (ColorShadowPass), unchanged for every existing - # caller. 1 = a single cheap VSM lookup (VSMShadowLookupData, vsm.sig, + # caller. 1 = a single cheap VSM lookup (VSMShadowLookupData, vsm.prism, # get_shadow_vsm_simple) instead -- one less BVH traversal per hit. A # caller setting 1 must bind VSMShadowLookupData and declare the VSM # resource reads on its PassNode. @@ -302,7 +302,7 @@ RaytraceRaygen Shadow # Independent RTX-only reference: 1 ray per pixel, genuinely noisy soft # shadow (no 16-sample averaging, no temporal history) -- see # MyRaygenShaderShadowRTXOnly's doc comment in raytracing.hlsl and PassNode -# ShadowRTX in voxel.sig. +# ShadowRTX in voxel.prism. [Bind = MainRTX] RaytraceRaygen ShadowRTX { @@ -312,7 +312,7 @@ RaytraceRaygen ShadowRTX # RTX-only reflection raygen -- see MyRaygenShaderReflectionRTXOnly's doc -# comment in raytracing.hlsl and PassNode ReflectionRTX in voxel.sig. +# comment in raytracing.hlsl and PassNode ReflectionRTX in voxel.prism. [Bind = MainRTX] RaytraceRaygen ReflectionRTX { @@ -320,7 +320,7 @@ RaytraceRaygen ReflectionRTX raygen = "rtx/raytracing.hlsl"; } -# Half-res sibling for PassNode ReflectionRTXHalf (voxel.sig) -- same trace +# Half-res sibling for PassNode ReflectionRTXHalf (voxel.prism) -- same trace # logic, shared via TraceReflection() in raytracing.hlsl, just over the # half-res GBuffer instead of full res. [Bind = MainRTX] @@ -332,7 +332,7 @@ RaytraceRaygen ReflectionRTXHalf # Voxel-cone-traced reflection signal, selectable against ReflectionRTX as # NRD's input -- see MyRaygenShaderReflection's doc comment in -# raytracing.hlsl and PassNode ScreenReflection in voxel.sig. +# raytracing.hlsl and PassNode ScreenReflection in voxel.prism. [Bind = MainRTX] RaytraceRaygen Reflection { @@ -343,7 +343,7 @@ RaytraceRaygen Reflection # RTX-only reference: 1 ray per pixel, genuinely noisy diffuse # GI (no voxel-cone-trace fallback on miss, no temporal history) -- see # MyRaygenShaderIndirectRTXOnly's doc comment in raytracing.hlsl and -# PassNode IndirectRTX in voxel.sig. +# PassNode IndirectRTX in voxel.prism. [Bind = MainRTX] RaytraceRaygen IndirectRTX { @@ -351,7 +351,7 @@ RaytraceRaygen IndirectRTX raygen = "rtx/raytracing.hlsl"; } -# Half-res sibling for PassNode IndirectRTXHalf (voxel.sig) -- same trace +# Half-res sibling for PassNode IndirectRTXHalf (voxel.prism) -- same trace # logic, shared via TraceIndirectDiffuse() in raytracing.hlsl, just over the # half-res GBuffer instead of full res. [Bind = MainRTX] @@ -363,7 +363,7 @@ RaytraceRaygen IndirectRTXHalf # Voxel-cone-traced indirect-GI signal, selectable against IndirectRTX as # NRD's input -- see MyRaygenShader's doc comment in raytracing.hlsl and -# PassNode VoxelScreen in voxel.sig. +# PassNode VoxelScreen in voxel.prism. [Bind = MainRTX] RaytraceRaygen Indirect { @@ -378,9 +378,9 @@ RaytraceRaygen ColorRTX raygen = "rtx/raytracing_debug.hlsl"; } -# DDGI probe-volume trace raygen (ddgi.sig, see [[project-ddgi]] planning +# DDGI probe-volume trace raygen (ddgi.prism, see [[project-ddgi]] planning # notes). Declared here for historical reasons: RaytraceRaygen::ID used to be -# assigned per .sig file, so a raygen in another file collided with Shadow's +# assigned per .prism file, so a raygen in another file collided with Shadow's # ID 0. IDs are now assigned per bound RaytracePSO after all files are merged # (assign_rtx_ids in Main.cpp), so a raygen can live in any file. [Bind = MainRTX] @@ -462,7 +462,7 @@ RaytracePass ColorShadowPass [RenderCondition = RenderDeviceCapabilities::rtx_supported] PassNode RTXShadow { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; diff --git a/sources/SIGParser/sigs/scene.sig b/sources/Prism/defs/scene.prism similarity index 98% rename from sources/SIGParser/sigs/scene.sig rename to sources/Prism/defs/scene.prism index bb534f282..91e3b39df 100644 --- a/sources/SIGParser/sigs/scene.sig +++ b/sources/Prism/defs/scene.prism @@ -134,7 +134,7 @@ PassNode Profiler [RunAlways] PassNode Scene { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. GBuffer_SpecularPrev dropped along with the old CopyPrev pass: # its history was unused (denoiser roughness-history disabled), and Scene # never actually created it even before flattening. diff --git a/sources/SIGParser/sigs/sky.sig b/sources/Prism/defs/sky.prism similarity index 100% rename from sources/SIGParser/sigs/sky.sig rename to sources/Prism/defs/sky.prism diff --git a/sources/SIGParser/sigs/smaa.sig b/sources/Prism/defs/smaa.prism similarity index 100% rename from sources/SIGParser/sigs/smaa.sig rename to sources/Prism/defs/smaa.prism diff --git a/sources/SIGParser/sigs/stenciler.sig b/sources/Prism/defs/stenciler.prism similarity index 100% rename from sources/SIGParser/sigs/stenciler.sig rename to sources/Prism/defs/stenciler.prism diff --git a/sources/SIGParser/sigs/test.sig b/sources/Prism/defs/test.prism similarity index 91% rename from sources/SIGParser/sigs/test.sig rename to sources/Prism/defs/test.prism index 44a4113a8..0e94c7f82 100644 --- a/sources/SIGParser/sigs/test.sig +++ b/sources/Prism/defs/test.prism @@ -52,7 +52,7 @@ Pipeline MainPipeline # GBuffer_HalfDepth/HalfNormals + TileClassifyHi/Low/Mask, generic infra # for any pass below wanting a "does this tile need full-res work" - # signal -- see TileClassifyData's own comment (pssm.sig). Must precede + # signal -- see TileClassifyData's own comment (pssm.prism). Must precede # every consumer; not [Async] since it reads this frame's just-finished # GBuffer directly. GBufferDownsampler; @@ -60,7 +60,7 @@ Pipeline MainPipeline [Async]ShadowRTX; # DDGIProbeSelect ONLY (not the rest of the DDGI block -- see below): # sole creator of DDGI_ProbeIrradiance/Visibility/Residency/ - # ResidencyPending/etc (ddgi.sig's own comment on [Optional = + # ResidencyPending/etc (ddgi.prism's own comment on [Optional = # data.pass_index == 0]), so it must still run before ReflectionRTX/ # IndirectRTX below, which read those resources -- a PassNode reading a # resource its own creator pass hasn't created THIS FRAME null-derefs in @@ -100,7 +100,7 @@ Pipeline MainPipeline # (selected via g_indirect_source/g_reflection_source, see # [[project-nrd-integration]]) -- run after Mipmapping (VoxelLighted is # ready by here) and before NRD_GBufferPack, which now reads their raw - # output too (packs every candidate unconditionally, see its own .sig + # output too (packs every candidate unconditionally, see its own .prism # comment) -- NRD_GBufferPack must come after both its RTX producers # (IndirectRTX/ReflectionRTX, above) and its VCT producers (here), or # builder.need() on a not-yet-created resource null-derefs in @@ -116,14 +116,14 @@ Pipeline MainPipeline # now (both read VSM_PageHiZ) -- same [Async2] queue so that # ordering is ordinary same-queue in-order execution, not a new # cross-queue fence. See VSM_HiZRebuild's own comment in - # vsm.sig. Moved here from its previous spot near the end of + # vsm.prism. Moved here from its previous spot near the end of # the pipeline. [Async]VSM_HiZRebuild; # Phase 5.18 Part A follow-up (take 4): three stages, in order -- # classify builds the tile lists, search runs indirectly over # just the ambiguous ones, resolve issues the three per-tile PSOs # (full-lit/full-shadow/shadow-blur) that write the final shadow - # value. See vsm.sig's own PassNode comments. + # value. See vsm.prism's own PassNode comments. [Async]VSM_BlockerClassify; [Async]VSM_BlockerSearch; [Async]VSM_ScreenSpaceShadow; @@ -131,17 +131,17 @@ Pipeline MainPipeline [Async]VSM_Combine; # Debug-only overlay, after VSM_ShadowResolve/VSM_Combine so it # paints on top of whichever one actually shaded the result -- see - # its own PassNode comment in vsm.sig. + # its own PassNode comment in vsm.prism. [Async]VSM_DebugClassifyOverlay; [Async]NRD_REBLUR_Execute; # FSR/DLSS-side equivalent of the indirect term RTXCombine computes - # for DLSS-RR -- see nrd_sig_test.sig's own PassNode comment and + # for DLSS-RR -- see nrd_sig_test.prism's own PassNode comment and # [[project-nrd-integration]]. [Async]NRD_IndirectCombine; [Async]ReflCombine; [Async]RTXCombine; - # RTX-reference shadow (see vsm.sig's own VSMSelectors::shadow_source + # RTX-reference shadow (see vsm.prism's own VSMSelectors::shadow_source # comment, [[project-nrd-integration]]) -- runs after VSM's own chain # above so its overwrite of ResultTexture's shadow term is the last # word whenever RTXReference is selected. @@ -151,7 +151,7 @@ Pipeline MainPipeline # DDGI probe-volume debug splat (see [[project-ddgi]] planning notes, # DDGISelectors::show_probes) -- reads/writes ResultTexture, which # under DLSS-RR is never written this frame (RTXCombine writes - # ResultTextureRTXNoise instead, see its own comment, voxel.sig) -- + # ResultTextureRTXNoise instead, see its own comment, voxel.prism) -- # known limitation, not wired to fall back the way DebugMode's own # switch (Base.cpp) does for other debug views. Revisit if the splat # doesn't show up under DLSS-RR. diff --git a/sources/SIGParser/sigs/ui.sig b/sources/Prism/defs/ui.prism similarity index 100% rename from sources/SIGParser/sigs/ui.sig rename to sources/Prism/defs/ui.prism diff --git a/sources/SIGParser/sigs/voxel.sig b/sources/Prism/defs/voxel.prism similarity index 95% rename from sources/SIGParser/sigs/voxel.sig rename to sources/Prism/defs/voxel.prism index baa95b335..17efdddcc 100644 --- a/sources/SIGParser/sigs/voxel.sig +++ b/sources/Prism/defs/voxel.prism @@ -83,7 +83,7 @@ struct VoxelOutput # Only TraceIndirectDiffuse's raygens (IndirectRTX/IndirectRTXHalf) read # these; every other VoxelOutput consumer leaves them unbound, same as # this struct's other pass-specific fields above. One DDGIInfo per - # cascade -- see DDGIIndirectDebugData's own comment (ddgi.sig) for why + # cascade -- see DDGIIndirectDebugData's own comment (ddgi.prism) for why # named fields, not an array. DDGIInfo ddgi_cascade0; DDGIInfo ddgi_cascade1; @@ -97,10 +97,10 @@ struct VoxelOutput # texels get blended in as if current, which is exactly what surfaced as # visible artifacts in the DDGI Indirect debug view once real residency # culling actually started dropping probes. Read-only here; DDGIProbeResidencyMark - # (ddgi.sig) is the sole writer. + # (ddgi.prism) is the sole writer. StructuredBuffer ddgi_residency; # Hit-point-driven residency marking's inbox (see [[project-ddgi]] - # planning notes and DDGI_ProbeResidencyPending's own comment, ddgi.sig): + # planning notes and DDGI_ProbeResidencyPending's own comment, ddgi.prism): # TraceIndirectDiffuse writes 1 here at its own ray's hit point, one # probe cell per cascade (skipping the coarsest, which is always # resident regardless). Shared across all DDGI_CascadeCount cascades in @@ -112,7 +112,7 @@ struct VoxelOutput # NOT the full GBuffer/VoxelScreen struct: this dispatch only has # GBuffer_HalfDepth/HalfNormals, and populating a synthetic GBuffer with the # rest left default risks an unbound-descriptor read (the same #939 class of -# bug documented elsewhere in this .sig) for channels the shader never +# bug documented elsewhere in this .prism) for channels the shader never # touches but the table still declares. [Bind = DefaultLayout::Instance4] struct IndirectRTXHalfGBuffer @@ -348,7 +348,7 @@ ComputePSO RTXCombine # VoxelDebug needs. Mirrored once per frame by VoxelGI::update_frame() # (VoxelGIGraph.cpp) rather than read from `this`, because the generated # setups below are static functions in autogen/pass_defaults.cpp with no -# VoxelGI instance to reach -- same reason as VSMSelectors (vsm.sig). +# VoxelGI instance to reach -- same reason as VSMSelectors (vsm.prism). # # debug_voxel_trace mirrors `DebugContext::mode == VoxelTrace` as a bool # instead of the mode itself: DebugMode is a plain C++ enum in @@ -362,8 +362,8 @@ struct VoxelGISelectors bool debug_voxel_trace = false; } -# See TileClassifyData's own comment (pssm.sig) for the algorithm. [Static] -# and listed in MainPipeline (test.sig), same as IndirectRTX -- this used to +# See TileClassifyData's own comment (pssm.prism) for the algorithm. [Static] +# and listed in MainPipeline (test.prism), same as IndirectRTX -- this used to # be a runtime-wired add_library_pass with no actual call site left calling # it (dead: the pass never ran, before or after this rewrite), stateless # enough that [Static] + PassDefault is the @@ -373,7 +373,7 @@ struct VoxelGISelectors [RunAlways] PassNode GBufferDownsampler { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. GBuffer_Quality is intentionally NOT [Always] here either -- # it still needs its own manual builder.need() in setup() (VoxelGIGraph. # cpp), same reasoning as before flattening (this is the one pass that @@ -386,12 +386,12 @@ PassNode GBufferDownsampler # GBuffer_TempColor is the scratch target MipMapGenerator::generate_quality # needs -- a plain top-level field, not a PassView GBuffer leaf (see - # pssm.sig's own comment on why those moved out). + # pssm.prism's own comment on why those moved out). [Always = RenderTarget] [Size = ViewportContext::frame_size] [Format = R8G8_UNORM] Texture GBuffer_TempColor; # Raw [Size]: no grammar support for arithmetic, so the half-res transform - # is pasted as a literal C++ expression -- SIGParser doesn't interpret it, + # is pasted as a literal C++ expression -- Prism doesn't interpret it, # it's exactly the same (size+1)/2 the hand-written code used to compute. [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R32_FLOAT] Texture GBuffer_HalfDepth; @@ -422,7 +422,7 @@ PassNode GBufferDownsampler [SetupCondition = VoxelGISelectors::debug_voxel_trace] PassNode VoxelDebug { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -484,7 +484,7 @@ PassNode ReflectionRTXHalf [SetupCondition = RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available] PassNode ReflectionRTX { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -527,7 +527,7 @@ PassNode ReflectionRTX [SetupCondition = RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available] PassNode ShadowRTX { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -556,8 +556,8 @@ PassNode IndirectRTXHalf [Always = Read] TextureCube sky_cubemap_filtered_diffuse; # DDGI probe-volume feedback term (see [[project-ddgi]] planning notes), # sampled by TraceIndirectDiffuse (raytracing.hlsl), shared with - # IndirectRTX below. DDGIProbeSelect (ddgi.sig) is their sole [Size] - # creator and always runs earlier in test.sig's MainPipeline -- not + # IndirectRTX below. DDGIProbeSelect (ddgi.prism) is their sole [Size] + # creator and always runs earlier in test.prism's MainPipeline -- not # gated on DDGISelectors::enabled here yet since that toggle has no real # control path today (always true); revisit once it does. [Always = Read] Texture DDGI_ProbeIrradiance; @@ -567,7 +567,7 @@ PassNode IndirectRTXHalf [Always = Read] StructuredBuffer DDGI_ProbeResidency; # Written at this pass's own ray hit points -- see VoxelOutput's own # comment on ddgi_residency_pending and DDGI_ProbeResidencyPending's - # (ddgi.sig). + # (ddgi.prism). [Always = UnorderedAccess] StructuredBuffer DDGI_ProbeResidencyPending; [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R16G16B16A16_FLOAT] @@ -584,14 +584,14 @@ PassNode IndirectRTXHalf # GBufferDownsampler) skips its own TraceRay entirely and bilinear-samples # IndirectRTXHalf's output instead (see raytracing.hlsl's # MyRaygenShaderIndirectRTXOnly) -- first consumer of the generic tile -# system built for exactly this (TileClassifyData, pssm.sig). Only Hi tiles +# system built for exactly this (TileClassifyData, pssm.prism). Only Hi tiles # pay for a fresh ray. [Static] [Compute] [SetupCondition = RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available] PassNode IndirectRTX { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -626,7 +626,7 @@ PassNode IndirectRTX [SetupCondition = VoxelGISelectors::reflection_enabled && UpscalerSelectors::upscaler_type != UpscalerType::DLSSRR] PassNode ReflCombine { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -654,7 +654,7 @@ PassNode ReflCombine [SetupCondition = UpscalerSelectors::upscaler_type == UpscalerType::DLSSRR] PassNode RTXCombine { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -665,7 +665,7 @@ PassNode RTXCombine # denoising on this exact signal (its ColorIn tag), so feeding it # NRD-denoised data would be a redundant double-denoise. NRD isn't even # running when this pass does (NRD_REBLUR_Execute is gated off under - # DLSS-RR) -- see NRD_GBufferPack's own comment (nrd_sig_test.sig). + # DLSS-RR) -- see NRD_GBufferPack's own comment (nrd_sig_test.prism). [Always = Read] Texture RTXReflectionNoise; [Always = Read] Texture RTXIndirectNoise; [Always = Read] Texture RTXShadowNoise; @@ -722,7 +722,7 @@ PassNode Mipmapping [SetupCondition = IndirectGISelectors::indirect_source == IndirectSource::MyVCT && UpscalerSelectors::upscaler_type != UpscalerType::DLSSRR && RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available] PassNode VoxelScreen { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -744,7 +744,7 @@ PassNode VoxelScreen [SetupCondition = IndirectGISelectors::reflection_source == ReflectionSource::MyReflection && UpscalerSelectors::upscaler_type != UpscalerType::DLSSRR && RenderDeviceCapabilities::rtx_supported && RenderDeviceCapabilities::dlssrr_available] PassNode ScreenReflection { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; diff --git a/sources/SIGParser/sigs/vsm.sig b/sources/Prism/defs/vsm.prism similarity index 97% rename from sources/SIGParser/sigs/vsm.sig rename to sources/Prism/defs/vsm.prism index 1523df0d6..61ab72409 100644 --- a/sources/SIGParser/sigs/vsm.sig +++ b/sources/Prism/defs/vsm.prism @@ -14,7 +14,7 @@ # Fixed clipmap-level storage budget, shared between C++ (VSM.ixx, # VSMInvalidationTracker.ixx -- both used to hand-declare their own copy of # this same number) and the FrameGraph resource sizing below (VSM_DispatchCommands), -# via the generated Constants:: namespace (see SIG.g4's const_definition / +# via the generated Constants:: namespace (see Prism.g4's const_definition / # constants.jinja) -- one source of truth instead of three. const MaxLevels = 26; # Upper bound on per-frame (active level x scene mesh) indirect draw entries @@ -70,14 +70,14 @@ enum VSMDebugView # SIG-declared (not a hand-written C++ global) so [Optional=`...`] on the # need()-guards below can read it directly via get_context() -- same pattern as nrd_sig_test.sig's IndirectGISelectors. +# VSMSelectors>() -- same pattern as nrd_sig_test.prism's IndirectGISelectors. # use_vsm_contact_shadow/vsm_debug_view themselves stay Variable members # of VSM (VSM.ixx, GUI-editable) -- this struct isn't a relay target for # some other owner, it's a per-frame snapshot each consuming setup() ( # m_shadowresolve_setup/m_combine_setup/m_debugoverlay_setup, VSM.cpp) writes # from `this` before its own need_always() runs, since need_always() is a # static function with no `this` to read the Variables from directly. -# Sibling of nrd_sig_test.sig's IndirectSource/ReflectionSource -- picks +# Sibling of nrd_sig_test.prism's IndirectSource/ReflectionSource -- picks # between VSM's own clipmap shadow (VSM_ShadowResolve/VSM_Combine) and the # raw-RTX-then-NRD-SIGMA-denoised reference (ShadowRTX -> NRD_SIGMA_Execute # -> NRD_ShadowCombine). See [[project-nrd-integration]]. @@ -172,7 +172,7 @@ struct VSMConstants # own passes that only need a simple depth-compare sample, not the full # penumbra/PCSS pipeline -- e.g. VoxelGI's Lighting pass, which runs before # VSM_BlockerClassify/VSM_BlockerSearch/VSM_ShadowResolve in the frame (see -# test.sig's MainPipeline ordering), so only the raw atlas+page-table lookup +# test.prism's MainPipeline ordering), so only the raw atlas+page-table lookup # is ever available to it. Mirrors VSMConstants' own level-lookup fields # exactly (see VSM::fill_shadow_lookup_constants) plus the three VSMLighting # resource fields get_shadow_vsm_simple actually reads -- the runtime-toggle- @@ -348,7 +348,7 @@ struct VSMLighting Texture2DArray page_table; StructuredBuffer page_cameras; RWTexture2D result; - # Pre-baked screen-space noise (see BlueNoise.sig) -- rotates the PCSS + # Pre-baked screen-space noise (see BlueNoise.prism) -- rotates the PCSS # Poisson disc per pixel (VSM_impl.hlsl's get_shadow_vsm) so the fixed # 16-tap pattern doesn't read as a rigid, repeating grid at wide radii. # A plain field on the already-Instance2-bound VSMLighting rather than @@ -739,7 +739,7 @@ GraphicsPSO VSMDepthDrawMaterial # Phase 5.8: per-(level,mesh) indirect draw entry, replacing the CPU # "for level { for mesh { dispatch_mesh() } }" loop with one exec_indirect -# call. Shaped exactly like meshrender.sig's CommandData (pointer fields to +# call. Shaped exactly like meshrender.prism's CommandData (pointer fields to # Bind-tagged CBV structs + a DispatchMeshArguments) -- page_batch_cb takes # VSMPageBatch's place of CommandData's MaterialInfo*, carrying this entry's # level/dirty_mask/skip_occlusion instead of per-level root-constant binds. @@ -751,9 +751,9 @@ GraphicsPSO VSMDepthDrawMaterial # updates to be in strictly increasing {RootParameterIndex, offset} order. # VSMPageBatch is DefaultLayout::Instance0, MeshInfo is Instance1, # MeshInstanceInfo is Instance2, MaterialInfo is DefaultLayout::MaterialData -# (declared AFTER Instance0-5/Raytracing in defaultlayout.sig, so its root +# (declared AFTER Instance0-5/Raytracing in defaultlayout.prism, so its root # index is higher than all three Instance ones) -- material_cb must come -# last of the pointer fields, matching meshrender.sig's CommandData's own +# last of the pointer fields, matching meshrender.prism's CommandData's own # order, or CreateCommandSignature fails with "Root parameter {slots, # offset} must be increasing" (confirmed the hard way, twice now). # @@ -814,7 +814,7 @@ ComputePSO VSMGatherDispatch # VSMGatherDispatch above (its own Instance1 binding, no collision -- only # one of the two is ever bound at once), same file/mesh-vs-level test, but # routes matching entries into one of up to 8 per-material-pipeline bucket -# lists instead of the single default list -- mirrors meshrender.sig's +# lists instead of the single default list -- mirrors meshrender.prism's # GatherPipeline (pip_ids[2]/commands[8]) and gather_pipeline.hlsl's # get_index exactly, just producing VSMDispatchCommandData instead of # CommandData. VSM.cpp runs this once per batch of <=8 distinct transparent @@ -915,7 +915,7 @@ PassNode VSM_RenderPages # this same frame -- VSM_BlockerSearch's classification step (VSM_impl.hlsl's # vsm_search_blocker) now samples it too, so this pass has to actually # finish before VSM_BlockerSearch runs, not just before next frame's -# VSM_RenderPages draw. test.sig's pipeline listing moves this immediately +# VSM_RenderPages draw. test.prism's pipeline listing moves this immediately # before VSM_BlockerSearch (both [Async2], same physical queue) so that # ordering falls out of ordinary same-queue in-order execution rather than # needing a new cross-queue fence. [Compute] still keeps it off the direct @@ -957,7 +957,7 @@ PassNode VSM_HiZRebuild [SetupCondition = VSMSelectors::use_vsm_penumbra] PassNode VSM_BlockerClassify { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -992,13 +992,13 @@ PassNode VSM_BlockerClassify # for pixels the pyramid alone can already answer confidently within an # otherwise-ambiguous tile (see VSMPageHiZ's own comment for the two # channels' meaning). This is why VSM_HiZRebuild moved to run immediately -# before stage 1 in test.sig's listing -- the pyramid both stage 1 and +# before stage 1 in test.prism's listing -- the pyramid both stage 1 and # stage 2 read must be this frame's freshly-rebuilt one, not last frame's. [Compute] [SetupCondition = VSMSelectors::use_vsm_penumbra] PassNode VSM_BlockerSearch { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -1011,7 +1011,7 @@ PassNode VSM_BlockerSearch # Phase 5.18 Part A: vsm_search_blocker's classification step reads # this -- needs this frame's freshly-rebuilt pyramid, hence # VSM_HiZRebuild moving to run immediately before stage 1 (same - # [Async2] queue, test.sig). + # [Async2] queue, test.prism). [Always = Read] Texture VSM_PageHiZ; [Always = Read] Texture BlueNoise; # Stage 1 (VSM_BlockerClassify) owns creating this. Its own dispatch @@ -1072,7 +1072,7 @@ struct VSMScreenSpaceShadowParams float far_depth_value; float near_depth_value; # VSM::vsm_contact_shadow_thickness -- runtime-tunable version of Bend's - # own SurfaceThickness (SS_Shadow.sig's own field, same meaning: assumed + # own SurfaceThickness (SS_Shadow.prism's own field, same meaning: assumed # thickness of each pixel for shadow-casting, as a fraction of the # sample-to-FarDepthValue depth range). Was a hardcoded compile-time # constant in this file's first version; the actual reach/width a @@ -1094,7 +1094,7 @@ ComputePSO VSMScreenSpaceShadow [SetupCondition = VSMSelectors::use_vsm_penumbra && VSMSelectors::use_vsm_contact_shadow] PassNode VSM_ScreenSpaceShadow { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -1136,7 +1136,7 @@ PassNode VSM_ScreenSpaceShadow [SetupCondition = VSMSelectors::use_vsm_penumbra && VSMSelectors::shadow_source == ShadowSource::VSM] PassNode VSM_ShadowResolve { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -1171,7 +1171,7 @@ PassNode VSM_ShadowResolve [Always = UnorderedAccess] Texture ResultTexture; # Diagnostic-only (see VSMLighting's own shadow_noise comment, # [[project-nrd-integration]]) -- separate resource from ShadowRTX's own - # VSM_ShadowNoise (voxel.sig) so the two producers, which can both be + # VSM_ShadowNoise (voxel.prism) so the two producers, which can both be # active the same frame (ShadowRTX runs unconditionally on RTX-capable # hardware regardless of shadow_source), never write the same resource. [Always = UnorderedAccess] [Size = ViewportContext::frame_size] [Format = R16_FLOAT] @@ -1194,7 +1194,7 @@ PassNode VSM_ShadowResolve [SetupCondition = !VSMSelectors::use_vsm_penumbra && VSMSelectors::shadow_source == ShadowSource::VSM] PassNode VSM_Combine { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -1249,7 +1249,7 @@ PassNode VSM_Combine [SetupCondition = VSMSelectors::use_vsm_penumbra && VSMSelectors::vsm_debug_view != VSMDebugView::None] PassNode VSM_DebugClassifyOverlay { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; @@ -1267,7 +1267,7 @@ PassNode VSM_DebugClassifyOverlay # VSM_Combine's own ShadowMask field. [Always = Read] [Optional = VSMSelectors::vsm_debug_view == VSMDebugView::RtxReference && exists(ShadowMask)] Texture ShadowMask; - # VSM_ScreenSpaceShadow's own output -- see vsm.sig's VSM_ScreenSpaceShadow + # VSM_ScreenSpaceShadow's own output -- see vsm.prism's VSM_ScreenSpaceShadow # PassNode comment. Not [Write]: only ever read, for ContactShadow. # Existence-guarded, same reasoning as VSM_ShadowResolve's own # VSM_ContactShadow field. @@ -1318,7 +1318,7 @@ ComputePSO VSMDepthAnalysis [RunAlways] PassNode VSM_DepthAnalysis { - # Flat fields, not the (removed) GBuffer PassView -- see pssm.sig's own + # Flat fields, not the (removed) GBuffer PassView -- see pssm.prism's own # comment. [Always = Read] Texture GBuffer_Albedo; [Always = Read] Texture GBuffer_Normals; diff --git a/sources/Prism/editor/PrismCommands.vsct b/sources/Prism/editor/PrismCommands.vsct new file mode 100644 index 000000000..8e933e60e --- /dev/null +++ b/sources/Prism/editor/PrismCommands.vsct @@ -0,0 +1,61 @@ + + + + + + + + + + + + DefaultDocked + + Prism + Prism + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sources/SIGParser/editor/SigLanguageClient.cs b/sources/Prism/editor/PrismLanguageClient.cs similarity index 71% rename from sources/SIGParser/editor/SigLanguageClient.cs rename to sources/Prism/editor/PrismLanguageClient.cs index 83e36ac96..4f7fc9575 100644 --- a/sources/SIGParser/editor/SigLanguageClient.cs +++ b/sources/Prism/editor/PrismLanguageClient.cs @@ -1,5 +1,5 @@ -// VS side of the SIG language server: registers a content type for .sig files -// and starts `sigparser.exe --lsp` for them. Compiled by gen_vs_extension.py. +// VS side of the Prism language server: registers a content type for .prism files +// and starts `prismc.exe --lsp` for them. Compiled by gen_vs_extension.py. using System; using System.Collections.Generic; using System.ComponentModel.Composition; @@ -11,28 +11,28 @@ using Microsoft.VisualStudio.Threading; using Microsoft.VisualStudio.Utilities; -namespace Spectrum.Sig +namespace Spectrum.Prism { - public static class SigContentDefinition + public static class PrismContentDefinition { // Based on the remote-content type so the TextMate grammar shipped in // the same VSIX keeps colouring these files. [Export] - [Name("sig")] + [Name("prism")] [BaseDefinition(CodeRemoteContentDefinition.CodeRemoteContentTypeName)] - internal static ContentTypeDefinition SigContentType = null; + internal static ContentTypeDefinition PrismContentType = null; [Export] - [FileExtension(".sig")] - [ContentType("sig")] - internal static FileExtensionToContentTypeDefinition SigFileExtension = null; + [FileExtension(".prism")] + [ContentType("prism")] + internal static FileExtensionToContentTypeDefinition PrismFileExtension = null; } - [ContentType("sig")] + [ContentType("prism")] [Export(typeof(ILanguageClient))] - public class SigLanguageClient : ILanguageClient + public class PrismLanguageClient : ILanguageClient { - public string Name => "SIG Language Server"; + public string Name => "Prism Language Server"; public IEnumerable ConfigurationSections => null; public object InitializationOptions => null; public IEnumerable FilesToWatch => null; @@ -41,16 +41,16 @@ public class SigLanguageClient : ILanguageClient public event AsyncEventHandler StartAsync; public event AsyncEventHandler StopAsync; - // SIG_LSP_SERVER overrides the bundled server, e.g. to point at a - // freshly built bin/profile/sigparser.exe without reinstalling. + // PRISM_LSP_SERVER overrides the bundled server, e.g. to point at a + // freshly built bin/profile/prismc.exe without reinstalling. static string ServerPath() { - string overridePath = Environment.GetEnvironmentVariable("SIG_LSP_SERVER"); + string overridePath = Environment.GetEnvironmentVariable("PRISM_LSP_SERVER"); if (!string.IsNullOrEmpty(overridePath) && File.Exists(overridePath)) return overridePath; - string dir = Path.GetDirectoryName(typeof(SigLanguageClient).Assembly.Location); - return Path.Combine(dir, "server", "sigparser.exe"); + string dir = Path.GetDirectoryName(typeof(PrismLanguageClient).Assembly.Location); + return Path.Combine(dir, "server", "prismc.exe"); } public Task ActivateAsync(CancellationToken token) @@ -73,7 +73,7 @@ public Task ActivateAsync(CancellationToken token) return Task.FromResult(null); // Drain stderr so a chatty server can never block on a full pipe. - process.ErrorDataReceived += (s, e) => { if (e.Data != null) Debug.WriteLine("[sig-lsp] " + e.Data); }; + process.ErrorDataReceived += (s, e) => { if (e.Data != null) Debug.WriteLine("[prism-lsp] " + e.Data); }; process.BeginErrorReadLine(); return Task.FromResult(new Connection(process.StandardOutput.BaseStream, process.StandardInput.BaseStream)); @@ -91,7 +91,7 @@ public Task OnServerInitializeFailedAsync(ILanguag { return Task.FromResult(new InitializationFailureContext { - FailureMessage = "SIG language server failed to start: " + initializationState.StatusMessage, + FailureMessage = "Prism language server failed to start: " + initializationState.StatusMessage, }); } } diff --git a/sources/SIGParser/editor/SigPackage.cs b/sources/Prism/editor/PrismPackage.cs similarity index 82% rename from sources/SIGParser/editor/SigPackage.cs rename to sources/Prism/editor/PrismPackage.cs index b17ae8b6e..25b0a760e 100644 --- a/sources/SIGParser/editor/SigPackage.cs +++ b/sources/Prism/editor/PrismPackage.cs @@ -1,6 +1,6 @@ -// Tools > Regenerate SIG code (also on the SIG toolbar). Compiled into -// SigLanguageClient.dll by gen_vs_extension.py, which also writes this -// package's registration into sig.pkgdef -- there is no RegPkg step. +// Tools > Regenerate Prism code (also on the Prism toolbar). Compiled into +// PrismLanguageClient.dll by gen_vs_extension.py, which also writes this +// package's registration into prism.pkgdef -- there is no RegPkg step. using System; using System.Collections.Generic; using System.ComponentModel.Design; @@ -17,17 +17,17 @@ using Microsoft.VisualStudio.Shell.Interop; using Task = System.Threading.Tasks.Task; -namespace Spectrum.Sig +namespace Spectrum.Prism { [Guid(PackageGuid)] - public sealed class SigPackage : AsyncPackage + public sealed class PrismPackage : AsyncPackage { - // Must match guidSigPackage / guidSigCmdSet in SigCommands.vsct. - public const string PackageGuid = "ffdc10aa-ef2c-4958-b04a-0472de298aaa"; - static readonly Guid CommandSet = new Guid("922623a0-3f03-48f5-baa7-9e37559a407f"); + // Must match guidPrismPackage / guidPrismCmdSet in PrismCommands.vsct. + public const string PackageGuid = "40863436-2fa7-4ea3-9809-55aa6ce8b482"; + static readonly Guid CommandSet = new Guid("c5413801-5494-47f5-8ba9-1fc5983af154"); const int RegenerateId = 0x0100; - static readonly Guid PaneGuid = new Guid("5d0e5b1e-7c1a-4f6b-9f5e-2a3c9d1b7e41"); + static readonly Guid PaneGuid = new Guid("3924caf2-9eb2-40b4-80c0-c9e50ee5d2f3"); // Generator output folders, relative to the repo root: what the summary diffs. static readonly string[] OutputDirs = @@ -42,7 +42,7 @@ protected override async Task InitializeAsync(CancellationToken token, IProgress { await JoinableTaskFactory.SwitchToMainThreadAsync(token); var commands = (OleMenuCommandService)await GetServiceAsync(typeof(IMenuCommandService)); - var command = new OleMenuCommand((s, e) => JoinableTaskFactory.RunAsync(RegenerateAsync).FileAndForget("sig/regenerate"), + var command = new OleMenuCommand((s, e) => JoinableTaskFactory.RunAsync(RegenerateAsync).FileAndForget("prism/regenerate"), new CommandID(CommandSet, RegenerateId)); command.BeforeQueryStatus += (s, e) => command.Enabled = !running; commands.AddCommand(command); @@ -56,23 +56,23 @@ async Task RegenerateAsync() pane.Clear(); pane.Activate(); - // The generator reads .sig files from disk. + // The generator reads .prism files from disk. foreach (Document doc in dte.Documents) - if (!doc.Saved && doc.FullName.EndsWith(".sig", StringComparison.OrdinalIgnoreCase)) + if (!doc.Saved && doc.FullName.EndsWith(".prism", StringComparison.OrdinalIgnoreCase)) doc.Save(); string repo = FindRepo(dte); if (repo == null) { - pane.OutputStringThreadSafe("Could not find sources\\SIGParser\\sigs above the solution or the active document.\n"); - ShowMessage("Could not find the Spectrum checkout (sources\\SIGParser\\sigs) for this solution.", OLEMSGICON.OLEMSGICON_WARNING); + pane.OutputStringThreadSafe("Could not find sources\\Prism\\defs above the solution or the active document.\n"); + ShowMessage("Could not find the Spectrum checkout (sources\\Prism\\defs) for this solution.", OLEMSGICON.OLEMSGICON_WARNING); return; } - string sigDir = Path.Combine(repo, "sources", "SIGParser"); + string sigDir = Path.Combine(repo, "sources", "Prism"); string exe = PickGenerator(repo); pane.OutputStringThreadSafe($"Generator: {exe}\nWorking directory: {sigDir}\n\n"); - SetStatus("Regenerating SIG code..."); + SetStatus("Regenerating Prism code..."); Dictionary before, after; int exitCode; @@ -88,7 +88,7 @@ async Task RegenerateAsync() { await JoinableTaskFactory.SwitchToMainThreadAsync(); pane.OutputStringThreadSafe($"Could not run the generator: {e.Message}\n"); - SetStatus("SIG generation could not start."); + SetStatus("Prism generation could not start."); return; } finally @@ -102,9 +102,9 @@ async Task RegenerateAsync() if (exitCode != 0) { int errors = output.Split('\n').Count(l => l.Contains(": error:")); - string what = errors > 0 ? $"{errors} error(s) in .sig files" : $"exit code {exitCode}"; - SetStatus($"SIG generation failed: {what}; nothing was written."); - ShowMessage($"SIG generation failed ({what}); nothing was written.\n\nDetails are in the Output window, \"SIG\" pane.", + string what = errors > 0 ? $"{errors} error(s) in .prism files" : $"exit code {exitCode}"; + SetStatus($"Prism generation failed: {what}; nothing was written."); + ShowMessage($"Prism generation failed ({what}); nothing was written.\n\nDetails are in the Output window, \"Prism\" pane.", OLEMSGICON.OLEMSGICON_CRITICAL); return; } @@ -114,12 +114,12 @@ async Task RegenerateAsync() var modified = after.Keys.Where(k => before.TryGetValue(k, out var b) && b != after[k]).OrderBy(k => k).ToList(); var summary = new StringBuilder(); - summary.Append($"\nSIG regenerated: {modified.Count} modified, {added.Count} added, {removed.Count} removed.\n"); + summary.Append($"\nPrism regenerated: {modified.Count} modified, {added.Count} added, {removed.Count} removed.\n"); foreach (var f in added) summary.Append(" + " + f + "\n"); foreach (var f in removed) summary.Append(" - " + f + "\n"); foreach (var f in modified) summary.Append(" M " + f + "\n"); pane.OutputStringThreadSafe(summary.ToString()); - SetStatus($"SIG regenerated: {modified.Count} modified, {added.Count} added, {removed.Count} removed."); + SetStatus($"Prism regenerated: {modified.Count} modified, {added.Count} added, {removed.Count} removed."); // A new or deleted generated file is invisible to the build until // the Sharpmake projects are regenerated. @@ -150,7 +150,7 @@ static string FindRepo(DTE2 dte) foreach (string start in starts) for (var dir = new DirectoryInfo(start); dir != null; dir = dir.Parent) - if (Directory.Exists(Path.Combine(dir.FullName, "sources", "SIGParser", "sigs"))) + if (Directory.Exists(Path.Combine(dir.FullName, "sources", "Prism", "defs"))) return dir.FullName; return null; } @@ -159,8 +159,8 @@ static string FindRepo(DTE2 dte) // with the extension: generator changes then apply without reinstalling. static string PickGenerator(string repo) { - string bundled = Path.Combine(Path.GetDirectoryName(typeof(SigPackage).Assembly.Location), "server", "sigparser.exe"); - string local = Path.Combine(repo, "bin", "profile", "sigparser.exe"); + string bundled = Path.Combine(Path.GetDirectoryName(typeof(PrismPackage).Assembly.Location), "server", "prismc.exe"); + string local = Path.Combine(repo, "bin", "profile", "prismc.exe"); if (!File.Exists(local)) return bundled; if (!File.Exists(bundled)) return local; return File.GetLastWriteTimeUtc(local) > File.GetLastWriteTimeUtc(bundled) ? local : bundled; @@ -219,7 +219,7 @@ IVsOutputWindowPane GetPane() Guid guid = PaneGuid; if (window.GetPane(ref guid, out IVsOutputWindowPane pane) != 0 || pane == null) { - window.CreatePane(ref guid, "SIG", 1, 1); + window.CreatePane(ref guid, "Prism", 1, 1); window.GetPane(ref guid, out pane); } return pane; @@ -233,7 +233,7 @@ void SetStatus(string text) int ShowMessage(string text, OLEMSGICON icon, OLEMSGBUTTON buttons = OLEMSGBUTTON.OLEMSGBUTTON_OK) { - return VsShellUtilities.ShowMessageBox(this, text, "SIG", icon, buttons, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); + return VsShellUtilities.ShowMessageBox(this, text, "Prism", icon, buttons, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); } } } diff --git a/sources/SIGParser/editor/gen_vs_extension.py b/sources/Prism/editor/gen_vs_extension.py similarity index 85% rename from sources/SIGParser/editor/gen_vs_extension.py rename to sources/Prism/editor/gen_vs_extension.py index 18cfd2b02..0cf2485b3 100644 --- a/sources/SIGParser/editor/gen_vs_extension.py +++ b/sources/Prism/editor/gen_vs_extension.py @@ -1,24 +1,24 @@ """ -Generates Visual Studio editor support for .sig files from SIG.g4. +Generates Visual Studio editor support for .prism files from Prism.g4. -SIG.g4 stays the only grammar anyone edits. Everything lexical comes from it: +Prism.g4 stays the only grammar anyone edits. Everything lexical comes from it: keyword sets, declaration keywords, token regexes (comments, numbers, strings, backtick raw spans, %{ }% blocks), operators and bracket pairs. What the .g4 cannot say -- which TextMate scope a token gets, and which spans embed another language -- is the small table in SCOPES below. -The VSIX also carries the language server: SigLanguageClient.cs (compiled here +The VSIX also carries the language server: PrismLanguageClient.cs (compiled here with the csc and VS assemblies from the local install) starts the bundled -bin/profile/sigparser.exe with --lsp, which reports the same errors a generator +bin/profile/prismc.exe with --lsp, which reports the same errors a generator run would, live, in the Error List. Outputs (bin/editor/): - sig.vsix install by double-clicking - folder/SIG/... highlighting only, as a no-VSIX install; see --install-user + prism.vsix install by double-clicking + folder/Prism/... highlighting only, as a no-VSIX install; see --install-user Usage: python gen_vs_extension.py # regenerate bin/editor/ - python gen_vs_extension.py --install-user # also copy into %USERPROFILE%/.vs/Extensions/SIG + python gen_vs_extension.py --install-user # also copy into %USERPROFILE%/.vs/Extensions/Prism """ import argparse @@ -34,32 +34,32 @@ import zipfile HERE = os.path.dirname(os.path.abspath(__file__)) -G4_PATH = os.path.normpath(os.path.join(HERE, "..", "SIG.g4")) +G4_PATH = os.path.normpath(os.path.join(HERE, "..", "Prism.g4")) OUT_DIR = os.path.normpath(os.path.join(HERE, "..", "..", "..", "bin", "editor")) -EXT_ID = "Spectrum.SIG.Language" -EXT_NAME = "SIG language (Spectrum)" -SCOPE = "source.sig" +EXT_ID = "Spectrum.Prism.Language" +EXT_NAME = "Prism language (Spectrum)" +SCOPE = "source.prism" # --- the only hand-maintained part -------------------------------------------- # Lexer token -> scope, plus an optional embedded grammar for begin/end spans. # VS ships no HLSL TextMate grammar; source.cpp is the closest one it does ship. SCOPES = { - "COMMENT": {"name": "comment.line.number-sign.sig"}, - "STRING": {"name": "string.quoted.double.sig"}, - "RAWEXPR": {"name": "string.interpolated.raw.sig", "embed": "source.cpp"}, - "INSERT_BLOCK": {"name": "meta.embedded.block.hlsl.sig", "embed": "source.cpp"}, - "FLOAT_SCALAR": {"name": "constant.numeric.float.sig"}, - "INT_SCALAR": {"name": "constant.numeric.integer.sig"}, + "COMMENT": {"name": "comment.line.number-sign.prism"}, + "STRING": {"name": "string.quoted.double.prism"}, + "RAWEXPR": {"name": "string.interpolated.raw.prism", "embed": "source.cpp"}, + "INSERT_BLOCK": {"name": "meta.embedded.block.hlsl.prism", "embed": "source.cpp"}, + "FLOAT_SCALAR": {"name": "constant.numeric.float.prism"}, + "INT_SCALAR": {"name": "constant.numeric.integer.prism"}, } # Parser rules that are pure literal alternatives -> scope for those words. KEYWORD_GROUP_SCOPES = { - "shader_type": "support.type.shader-stage.sig", - "pso_param_id": "variable.parameter.sig", - "node_param_id": "variable.parameter.sig", - "bool_type": "constant.language.sig", + "shader_type": "support.type.shader-stage.prism", + "pso_param_id": "variable.parameter.prism", + "node_param_id": "variable.parameter.prism", + "bool_type": "constant.language.prism", } # Built-in type names. The .g4 cannot supply these: every type is a plain ID @@ -86,7 +86,7 @@ "StructuredBuffer", "RWStructuredBuffer", "AppendStructuredBuffer", "ConsumeStructuredBuffer", "ConstantBuffer", "SamplerState", "SamplerComparisonState", "RaytracingAccelerationStructure", "FeedbackTexture2D", "FeedbackTexture2DArray", "FeedbackTexture2DMip", - # SIG resource kinds (detect_type) and FrameGraph handler types (FrameGraph.Base.ixx; + # Prism resource kinds (detect_type) and FrameGraph handler types (FrameGraph.Base.ixx; # ByteAdressBuffer is spelled that way there). "Texture", "DepthStencil", "RenderTarget", "FormattedBuffer", "ByteAdressBuffer", ] @@ -94,7 +94,7 @@ # TextMate scope selector -> VS classification name. VS colours nothing it has # no mapping for: without this file only keyword/comment/number showed up. # Classification names are VS's own, restricted to ones the starter-kit themes -# already use, so they exist even without C#/Roslyn installed. The .sig-suffixed +# already use, so they exist even without C#/Roslyn installed. The .prism-suffixed # selectors are more specific than the generic ones, which exist for the C++ # grammar embedded in %{ }% and backtick spans. THEME = [ @@ -108,16 +108,16 @@ ("entity.name.function, support.function", "method name"), ("variable.parameter", "local name"), ("variable.other.member", "enum name"), - # SIG-specific - ("storage.type.sig, keyword.other.sig, constant.language.sig", "keyword"), - ("entity.name.type.sig", "class name"), - ("variable.other.member.sig", "enum name"), - ("entity.other.attribute-name.sig", "method name"), - ("support.type.shader-stage.sig", "preprocessor keyword"), - ("variable.parameter.sig", "local name"), + # Prism-specific + ("storage.type.prism, keyword.other.prism, constant.language.prism", "keyword"), + ("entity.name.type.prism", "class name"), + ("variable.other.member.prism", "enum name"), + ("entity.other.attribute-name.prism", "method name"), + ("support.type.shader-stage.prism", "preprocessor keyword"), + ("variable.parameter.prism", "local name"), ("punctuation.definition.attribute, punctuation.section.embedded", "operator"), # The colour VS gives #define macros; registered by the C++ language service. - ("constant.other.format.sig", "cppMacro"), + ("constant.other.format.prism", "cppMacro"), ] # DXGI format names (R16G16B16A16_FLOAT, D32_FLOAT_S8X24_UINT, BC7_UNORM_SRGB): @@ -125,9 +125,9 @@ FORMAT_REGEX = (r"\b(?:(?:[RGBAXDSE][0-9]+)+|BC[0-9]+H?)(?:_[A-Z0-9]+)*" r"_(?:FLOAT|UNORM|SNORM|UINT|SINT|TYPELESS|SRGB|SHAREDEXP|UF16|SF16)\b") -DECL_KEYWORD_SCOPE = "storage.type.sig" -OTHER_KEYWORD_SCOPE = "keyword.other.sig" -OPERATOR_SCOPE = "keyword.operator.sig" +DECL_KEYWORD_SCOPE = "storage.type.prism" +OTHER_KEYWORD_SCOPE = "keyword.other.prism" +OPERATOR_SCOPE = "keyword.operator.prism" # ------------------------------------------------------------------------------ @@ -439,10 +439,10 @@ def build_grammar(rules, a): # start matching at the indentation before `}%`, and the earliest # match wins -- without it the block never closes. p = {"name": cfg["name"], "begin": re_escape(be[0]), "end": r"\s*" + re_escape(be[1]), - "beginCaptures": {"0": {"name": "punctuation.section.embedded.begin.sig"}}, - "endCaptures": {"0": {"name": "punctuation.section.embedded.end.sig"}}} + "beginCaptures": {"0": {"name": "punctuation.section.embedded.begin.prism"}}, + "endCaptures": {"0": {"name": "punctuation.section.embedded.end.prism"}}} if "embed" in cfg: - p["contentName"] = cfg["embed"].replace("source.", "meta.embedded.") + ".sig" + p["contentName"] = cfg["embed"].replace("source.", "meta.embedded.") + ".prism" p["patterns"] = [{"include": cfg["embed"]}] else: rx = to_regex(ast) @@ -458,16 +458,16 @@ def build_grammar(rules, a): repo["declaration"] = { "match": "(" + words_regex(a["decl"]) + r")\s+(" + ident + ")", - "captures": {"1": {"name": DECL_KEYWORD_SCOPE}, "2": {"name": "entity.name.type.sig"}}, + "captures": {"1": {"name": DECL_KEYWORD_SCOPE}, "2": {"name": "entity.name.type.prism"}}, } repo["qualified"] = { "match": "(" + ident + r")\s*(::)\s*(" + ident + ")", - "captures": {"1": {"name": "entity.name.type.sig"}, - "2": {"name": "punctuation.separator.scope.sig"}, - "3": {"name": "variable.other.member.sig"}}, + "captures": {"1": {"name": "entity.name.type.prism"}, + "2": {"name": "punctuation.separator.scope.prism"}, + "3": {"name": "variable.other.member.prism"}}, } repo["function"] = {"match": "(" + ident + r")(?=\s*\()", - "captures": {"1": {"name": "entity.name.function.sig"}}} + "captures": {"1": {"name": "entity.name.function.prism"}}} kw = [] for scope, words in sorted(a["groups"].items()): @@ -475,11 +475,11 @@ def build_grammar(rules, a): repo[key] = {"name": scope, "match": words_regex(words)} kw.append(key) scalars = "|".join(sorted(BUILTIN_SCALARS, key=len, reverse=True)) - repo["builtin_scalar"] = {"name": "storage.type.primitive.sig", + repo["builtin_scalar"] = {"name": "storage.type.primitive.prism", "match": r"\b(?:" + scalars + r")(?:[1-4](?:x[1-4])?)?\b"} - repo["builtin_keyword_type"] = {"name": "storage.type.primitive.sig", "match": words_regex(BUILTIN_KEYWORD_TYPES)} - repo["builtin_resource"] = {"name": "support.type.resource.sig", "match": words_regex(BUILTIN_RESOURCES)} - repo["format"] = {"name": "constant.other.format.sig", "match": FORMAT_REGEX} + repo["builtin_keyword_type"] = {"name": "storage.type.primitive.prism", "match": words_regex(BUILTIN_KEYWORD_TYPES)} + repo["builtin_resource"] = {"name": "support.type.resource.prism", "match": words_regex(BUILTIN_RESOURCES)} + repo["format"] = {"name": "constant.other.format.prism", "match": FORMAT_REGEX} kw = ["format", "builtin_scalar", "builtin_keyword_type", "builtin_resource"] + kw repo["kw_decl"] = {"name": DECL_KEYWORD_SCOPE, "match": words_regex(a["decl"])} @@ -495,18 +495,18 @@ def build_grammar(rules, a): ob, cb = next(p for p in a["pairs"] if p[0] == "{") repo["option_block"] = { "begin": re_escape(osb), "end": re_escape(csb), - "beginCaptures": {"0": {"name": "punctuation.definition.attribute.begin.sig"}}, - "endCaptures": {"0": {"name": "punctuation.definition.attribute.end.sig"}}, + "beginCaptures": {"0": {"name": "punctuation.definition.attribute.begin.prism"}}, + "endCaptures": {"0": {"name": "punctuation.definition.attribute.end.prism"}}, "patterns": [ {"include": "#comment"}, {"include": "#option_values"}, # [rename = HIZ_OCCLUSION] names the HLSL #define a `define` becomes. {"match": r"\b(rename)\s*(=)\s*(" + ident + ")", - "captures": {"1": {"name": "entity.other.attribute-name.sig"}, - "2": {"name": "keyword.operator.sig"}, - "3": {"name": "constant.other.format.sig"}}}, + "captures": {"1": {"name": "entity.other.attribute-name.prism"}, + "2": {"name": "keyword.operator.prism"}, + "3": {"name": "constant.other.format.prism"}}}, {"match": r"(?<=" + re_escape(osb) + r"|,)\s*(" + ident + ")", - "captures": {"1": {"name": "entity.other.attribute-name.sig"}}}, + "captures": {"1": {"name": "entity.other.attribute-name.prism"}}}, {"include": "#values"}, ], } @@ -526,10 +526,10 @@ def build_grammar(rules, a): repo["function_braces"] = {"begin": ob_re, "end": cb_re, "patterns": [{"include": "#function_braces"}, {"include": "source.cpp"}]} repo["function_body"] = { - "name": "meta.embedded.block.hlsl.sig", "begin": ob_re, "end": r"\s*" + cb_re, - "beginCaptures": {"0": {"name": "punctuation.section.embedded.begin.sig"}}, - "endCaptures": {"0": {"name": "punctuation.section.embedded.end.sig"}}, - "contentName": "meta.embedded.cpp.sig", + "name": "meta.embedded.block.hlsl.prism", "begin": ob_re, "end": r"\s*" + cb_re, + "beginCaptures": {"0": {"name": "punctuation.section.embedded.begin.prism"}}, + "endCaptures": {"0": {"name": "punctuation.section.embedded.end.prism"}}, + "contentName": "meta.embedded.cpp.prism", "patterns": [{"include": "#function_braces"}, {"include": "source.cpp"}], } repo["function_definition"] = { @@ -546,10 +546,10 @@ def build_grammar(rules, a): return { "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", - "name": "SIG", + "name": "Prism", "scopeName": SCOPE, - "fileTypes": ["sig"], - "comment": "GENERATED from sources/SIGParser/SIG.g4 by sources/SIGParser/editor/gen_vs_extension.py -- do not edit.", + "fileTypes": ["prism"], + "comment": "GENERATED from sources/Prism/Prism.g4 by sources/Prism/editor/gen_vs_extension.py -- do not edit.", "patterns": [{"include": "#" + p} for p in top], "repository": repo, } @@ -583,7 +583,7 @@ def build_theme(): for sel, cls in THEME) return ('\n' '\n' - 'nameSIG Themesettings\n' + 'namePrism Themesettings\n' + entries + '\n') @@ -592,22 +592,22 @@ def build_theme(): # --- language server ----------------------------------------------------------- VS_ROOT = r"C:\Program Files\Microsoft Visual Studio\18\Community" -SERVER_EXE = os.path.normpath(os.path.join(HERE, "..", "..", "..", "bin", "profile", "sigparser.exe")) -CLIENT_SOURCES = [os.path.join(HERE, "SigLanguageClient.cs"), os.path.join(HERE, "SigPackage.cs")] -COMMANDS_VSCT = os.path.join(HERE, "SigCommands.vsct") +SERVER_EXE = os.path.normpath(os.path.join(HERE, "..", "..", "..", "bin", "profile", "prismc.exe")) +CLIENT_SOURCES = [os.path.join(HERE, "PrismLanguageClient.cs"), os.path.join(HERE, "PrismPackage.cs")] +COMMANDS_VSCT = os.path.join(HERE, "PrismCommands.vsct") VSSDK = os.path.join(VS_ROOT, r"VSSDK\VisualStudioIntegration") -# Must match SigPackage.PackageGuid / guidSigPackage in SigCommands.vsct. -PACKAGE_GUID = "{ffdc10aa-ef2c-4958-b04a-0472de298aaa}" +# Must match PrismPackage.PackageGuid / guidPrismPackage in PrismCommands.vsct. +PACKAGE_GUID = "{40863436-2fa7-4ea3-9809-55aa6ce8b482}" def compile_commands(out_dir): - """SigCommands.vsct -> .cto, the binary menu resource VS loads. Needs the + """PrismCommands.vsct -> .cto, the binary menu resource VS loads. Needs the VS Installer's "Visual Studio extension development" workload.""" vsct = os.path.join(VSSDK, r"Tools\Bin\VSCT.exe") if not os.path.exists(vsct): sys.exit(f"missing {vsct}: install the 'Visual Studio extension development' workload") - cto = os.path.join(out_dir, "SigCommands.cto") + cto = os.path.join(out_dir, "PrismCommands.cto") subprocess.run([vsct, COMMANDS_VSCT, cto, "-I" + os.path.join(VSSDK, r"Common\Inc")], check=True, stdout=subprocess.DEVNULL) @@ -615,7 +615,7 @@ def compile_commands(out_dir): # package assembly's .resources sets -- what the VSSDK's MergeWithCTO # produces. Embedding the .cto as a plain manifest resource of that name # fails with "Resource not found: Menus.ctmenu" in ActivityLog and no menu. - resources = os.path.join(out_dir, "SigLanguageClient.VSPackage.resources") + resources = os.path.join(out_dir, "PrismLanguageClient.VSPackage.resources") script = ("$w = New-Object System.Resources.ResourceWriter('{0}'); " "$w.AddResource('Menus.ctmenu', [IO.File]::ReadAllBytes('{1}')); $w.Generate(); $w.Close()" ).format(resources.replace("'", "''"), cto.replace("'", "''")) @@ -634,7 +634,7 @@ def compile_client(out_dir): os.path.join(ide, r"CommonExtensions\Microsoft\LanguageServer\Microsoft.VisualStudio.LanguageServer.Client.dll"), os.path.join(ide, r"CommonExtensions\Microsoft\Editor\Microsoft.VisualStudio.CoreUtility.dll"), os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Threading.17.x\Microsoft.VisualStudio.Threading.dll"), - # SigPackage: the command, output pane, status bar and DTE. + # PrismPackage: the command, output pane, status bar and DTE. os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Shell.15.0.dll"), os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Shell.Framework.dll"), os.path.join(ide, r"PublicAssemblies\Microsoft.VisualStudio.Interop.dll"), @@ -643,11 +643,11 @@ def compile_client(out_dir): os.path.join(ide, r"PublicAssemblies\envdte.dll"), os.path.join(ide, r"PublicAssemblies\envdte80.dll"), ] - out = os.path.join(out_dir, "SigLanguageClient.dll") + out = os.path.join(out_dir, "PrismLanguageClient.dll") csc = os.path.join(VS_ROOT, r"MSBuild\Current\Bin\Roslyn\csc.exe") # CS0067: StopAsync is required by ILanguageClient but never raised. cmd = [csc, "-nologo", "-noconfig", "-nostdlib", "-target:library", "-nowarn:67", "-out:" + out, - "-resource:" + compile_commands(out_dir) + ",SigLanguageClient.VSPackage.resources"] + CLIENT_SOURCES + "-resource:" + compile_commands(out_dir) + ",PrismLanguageClient.VSPackage.resources"] + CLIENT_SOURCES cmd += ["-r:" + r for r in refs] subprocess.run(cmd, check=True) return out @@ -677,17 +677,17 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): pkgdef = ( "// Generated by gen_vs_extension.py\r\n" "[$RootKey$\\TextMate\\Repositories]\r\n" - f"\"SIG\"=\"$PackageFolder$\\Grammars\"\r\n" + f"\"Prism\"=\"$PackageFolder$\\Grammars\"\r\n" "\r\n" "[$RootKey$\\TextMate\\LanguageConfiguration\\GrammarMapping]\r\n" f"\"{SCOPE}\"=\"$PackageFolder$\\language-configuration.json\"\r\n" "\r\n" - # SigPackage: what the VSSDK's RegPkg would otherwise write from its attributes. + # PrismPackage: what the VSSDK's RegPkg would otherwise write from its attributes. f"[$RootKey$\\Packages\\{PACKAGE_GUID}]\r\n" - "@=\"Spectrum.Sig.SigPackage\"\r\n" + "@=\"Spectrum.Prism.PrismPackage\"\r\n" "\"InprocServer32\"=\"$WinDir$\\SYSTEM32\\MSCOREE.DLL\"\r\n" - "\"Class\"=\"Spectrum.Sig.SigPackage\"\r\n" - "\"CodeBase\"=\"$PackageFolder$\\SigLanguageClient.dll\"\r\n" + "\"Class\"=\"Spectrum.Prism.PrismPackage\"\r\n" + "\"CodeBase\"=\"$PackageFolder$\\PrismLanguageClient.dll\"\r\n" "\"AllowsBackgroundLoad\"=dword:00000001\r\n" "\r\n" f"[$RootKey$\\BindingPaths\\{PACKAGE_GUID}]\r\n" @@ -705,7 +705,7 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): {EXT_NAME} - Syntax highlighting and live diagnostics for Spectrum .sig files. + Syntax highlighting and live diagnostics for Spectrum .prism files. @@ -713,8 +713,8 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): - - + + @@ -735,15 +735,15 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): files = { "extension.vsixmanifest": manifest, - "sig.pkgdef": pkgdef, - "Grammars/sig.tmLanguage.json": grammar_json, + "prism.pkgdef": pkgdef, + "Grammars/prism.tmLanguage.json": grammar_json, # Named like the starter kit's cpp.tmLanguage.tmTheme, next to its grammar. - "Grammars/sig.tmLanguage.tmTheme": theme_xml, + "Grammars/prism.tmLanguage.tmTheme": theme_xml, "language-configuration.json": langcfg_json, **binaries, } size = sum(len(v.encode("utf-8") if isinstance(v, str) else v) for v in files.values()) - ext_dir = "[installdir]\\Common7\\IDE\\Extensions\\SpectrumSIG" + ext_dir = "[installdir]\\Common7\\IDE\\Extensions\\SpectrumPrism" deps = {"Microsoft.VisualStudio.Component.CoreEditor": "[17.0,19.0)"} files["manifest.json"] = json.dumps({ @@ -760,10 +760,10 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): "id": "Component." + EXT_ID, "version": version, "type": "Component", "extension": True, "dependencies": {EXT_ID: version, **deps}, "localizedResources": [{"language": "en-US", "title": EXT_NAME, - "description": "Syntax highlighting for Spectrum .sig files."}], + "description": "Syntax highlighting for Spectrum .prism files."}], }, { "id": EXT_ID, "version": version, "type": "Vsix", - "payloads": [{"fileName": "sig.vsix", "size": size}], + "payloads": [{"fileName": "prism.vsix", "size": size}], "vsixId": EXT_ID, "extensionDir": ext_dir, "installSizes": {"targetDrive": size}, "dependencies": deps, }], @@ -774,7 +774,7 @@ def vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries): def main(): ap = argparse.ArgumentParser() ap.add_argument("--install-user", action="store_true", - help="copy the grammar into %%USERPROFILE%%/.vs/Extensions/SIG (no VSIX needed)") + help="copy the grammar into %%USERPROFILE%%/.vs/Extensions/Prism (no VSIX needed)") args = ap.parse_args() with open(G4_PATH, encoding="utf-8") as f: @@ -793,14 +793,14 @@ def main(): os.makedirs(OUT_DIR, exist_ok=True) theme_xml = build_theme() - # The server is whatever sigparser.exe was last built, so rebuild SIGParser + # The server is whatever prismc.exe was last built, so rebuild Prism # (Profile) before regenerating when its validation changed. if not os.path.exists(SERVER_EXE): - sys.exit(f"missing {SERVER_EXE}: build the sigparser project (Profile) first") + sys.exit(f"missing {SERVER_EXE}: build the Prism project (Profile) first") binaries = {} with tempfile.TemporaryDirectory() as tmp: with open(compile_client(tmp), "rb") as f: - binaries["SigLanguageClient.dll"] = f.read() + binaries["PrismLanguageClient.dll"] = f.read() server_files = dll_closure(SERVER_EXE) for path in server_files: with open(path, "rb") as f: @@ -808,19 +808,19 @@ def main(): files, content_types = vsix_files(version, grammar_json, langcfg_json, theme_xml, binaries) - vsix_path = os.path.join(OUT_DIR, "sig.vsix") + vsix_path = os.path.join(OUT_DIR, "prism.vsix") with zipfile.ZipFile(vsix_path, "w", zipfile.ZIP_DEFLATED) as z: z.writestr("[Content_Types].xml", content_types) for name, data in files.items(): z.writestr(name, data) # Folder layout for the documented no-VSIX route: /Syntaxes/*.tmLanguage.json - folder = os.path.join(OUT_DIR, "folder", "SIG") + folder = os.path.join(OUT_DIR, "folder", "Prism") shutil.rmtree(folder, ignore_errors=True) os.makedirs(os.path.join(folder, "Syntaxes")) - with open(os.path.join(folder, "Syntaxes", "sig.tmLanguage.json"), "w", encoding="utf-8") as f: + with open(os.path.join(folder, "Syntaxes", "prism.tmLanguage.json"), "w", encoding="utf-8") as f: f.write(grammar_json) - with open(os.path.join(folder, "Syntaxes", "sig.tmLanguage.tmTheme"), "w", encoding="utf-8") as f: + with open(os.path.join(folder, "Syntaxes", "prism.tmLanguage.tmTheme"), "w", encoding="utf-8") as f: f.write(theme_xml) with open(os.path.join(folder, "language-configuration.json"), "w", encoding="utf-8") as f: f.write(langcfg_json) @@ -831,7 +831,7 @@ def main(): print(f"wrote {vsix_path} (version {version})") if args.install_user: - dest = os.path.join(os.path.expanduser("~"), ".vs", "Extensions", "SIG") + dest = os.path.join(os.path.expanduser("~"), ".vs", "Extensions", "Prism") shutil.rmtree(dest, ignore_errors=True) shutil.copytree(folder, dest) print(f"installed to {dest} -- restart Visual Studio") diff --git a/sources/SIGParser/generate.bat b/sources/Prism/generate.bat similarity index 84% rename from sources/SIGParser/generate.bat rename to sources/Prism/generate.bat index e55d38613..56640fbc0 100644 --- a/sources/SIGParser/generate.bat +++ b/sources/Prism/generate.bat @@ -1 +1 @@ -java -cp ./antlr-4.11.1-complete.jar org.antlr.v4.Tool -o ./.antlr SIG.g4 \ No newline at end of file +java -cp ./antlr-4.11.1-complete.jar org.antlr.v4.Tool -o ./.antlr Prism.g4 diff --git a/sources/SIGParser/templates/cpp/autogen.jinja b/sources/Prism/templates/cpp/autogen.jinja similarity index 93% rename from sources/SIGParser/templates/cpp/autogen.jinja rename to sources/Prism/templates/cpp/autogen.jinja index cc9235f29..e50d35fcf 100644 --- a/sources/SIGParser/templates/cpp/autogen.jinja +++ b/sources/Prism/templates/cpp/autogen.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ module; // Private imports for internal use only - not re-exported to reduce compile times diff --git a/sources/SIGParser/templates/cpp/autogen_impl.jinja b/sources/Prism/templates/cpp/autogen_impl.jinja similarity index 88% rename from sources/SIGParser/templates/cpp/autogen_impl.jinja rename to sources/Prism/templates/cpp/autogen_impl.jinja index de0d50fb5..56b8a86e4 100644 --- a/sources/SIGParser/templates/cpp/autogen_impl.jinja +++ b/sources/Prism/templates/cpp/autogen_impl.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ module HAL; import HAL; diff --git a/sources/SIGParser/templates/cpp/constants.jinja b/sources/Prism/templates/cpp/constants.jinja similarity index 74% rename from sources/SIGParser/templates/cpp/constants.jinja rename to sources/Prism/templates/cpp/constants.jinja index 8a0bd3df2..3375ca25c 100644 --- a/sources/SIGParser/templates/cpp/constants.jinja +++ b/sources/Prism/templates/cpp/constants.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.Constants; @@ -12,8 +12,8 @@ import Core; // never need a Table type at all) whenever a new raw const needs one. import :Autogen.Tables.TileRecord; -// One `const Name = value;` declaration (SIG.g4's const_definition) per line, -// in .sig declaration order -- a later constant's raw value may reference an +// One `const Name = value;` declaration (Prism.g4's const_definition) per line, +// in .prism declaration order -- a later constant's raw value may reference an // earlier one by its unqualified name (ordinary C++ initialization-order // rules), e.g. `const MaxDispatchEntries = `MaxLevels * 2048`;`. export namespace Constants diff --git a/sources/SIGParser/templates/cpp/context_deps.jinja b/sources/Prism/templates/cpp/context_deps.jinja similarity index 95% rename from sources/SIGParser/templates/cpp/context_deps.jinja rename to sources/Prism/templates/cpp/context_deps.jinja index 6d691417e..1776a6636 100644 --- a/sources/SIGParser/templates/cpp/context_deps.jinja +++ b/sources/Prism/templates/cpp/context_deps.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // Which Table:: context fields each pass's generated setup actually reads. // @@ -32,7 +32,7 @@ namespace FrameGraph // Fingerprint of this generated ID space (every PassID and ResourceID name, in // enum order). A serialized graph plan stores passes and resources by ID; if a -// .sig edit renumbers those enums, a plan from before the edit would not fail +// .prism edit renumbers those enums, a plan from before the edit would not fail // to load, it would misapply -- wrong resource, wrong barriers. A plan whose // header does not carry this exact value must be rejected. constexpr unsigned long long generated_id_space_hash = {{ id_space_hash() }}; @@ -107,7 +107,7 @@ struct PassContextDeps ContextFieldMask optional_fields; // False when some part of the expression was a raw backtick span, or named - // something that is not a SIG-declared context. The mask is then a LOWER + // something that is not a Prism-declared context. The mask is then a LOWER // BOUND, not the full set: treat the pass as always dirty. Under-reporting // a dependency is the only failure mode here that is silent, so it is made // explicit rather than assumed away. diff --git a/sources/SIGParser/templates/cpp/context_snapshot_cpp.jinja b/sources/Prism/templates/cpp/context_snapshot_cpp.jinja similarity index 96% rename from sources/SIGParser/templates/cpp/context_snapshot_cpp.jinja rename to sources/Prism/templates/cpp/context_snapshot_cpp.jinja index a4a8c3e95..543e4ae54 100644 --- a/sources/SIGParser/templates/cpp/context_snapshot_cpp.jinja +++ b/sources/Prism/templates/cpp/context_snapshot_cpp.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // Reads every Table:: context field into a flat ContextSnapshot, so a pass whose // inputs are unchanged can skip re-running its setup condition. @@ -10,7 +10,7 @@ // A separate translation unit for the same reason as autogen/pass_defaults.cpp: // context_deps.h is included from a global module fragment and cannot name a // Table:: type, but this file imports HAL once and can therefore reach every -// context regardless of which .sig declared it. +// context regardless of which .prism declared it. // context_deps.h goes in the global module fragment, not after `module // Graphics;` the way pass_defaults.cpp includes its own header: this one pulls // , and a standard header textually included in a module PURVIEW diff --git a/sources/SIGParser/templates/cpp/enums.jinja b/sources/Prism/templates/cpp/enums.jinja similarity index 91% rename from sources/SIGParser/templates/cpp/enums.jinja rename to sources/Prism/templates/cpp/enums.jinja index d740e36dc..1ce45316d 100644 --- a/sources/SIGParser/templates/cpp/enums.jinja +++ b/sources/Prism/templates/cpp/enums.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Enums; diff --git a/sources/SIGParser/templates/cpp/layout.jinja b/sources/Prism/templates/cpp/layout.jinja similarity index 90% rename from sources/SIGParser/templates/cpp/layout.jinja rename to sources/Prism/templates/cpp/layout.jinja index 31e282fb7..cc2e90435 100644 --- a/sources/SIGParser/templates/cpp/layout.jinja +++ b/sources/Prism/templates/cpp/layout.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.Layouts.{{layout.name}}; {% set slots = recursive_slots(layout.name) -%} diff --git a/sources/SIGParser/templates/cpp/pass.jinja b/sources/Prism/templates/cpp/pass.jinja similarity index 98% rename from sources/SIGParser/templates/cpp/pass.jinja rename to sources/Prism/templates/cpp/pass.jinja index 1d3c32738..118451b24 100644 --- a/sources/SIGParser/templates/cpp/pass.jinja +++ b/sources/Prism/templates/cpp/pass.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -139,7 +139,7 @@ public: // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/SIGParser/templates/cpp/pass_defaults.jinja b/sources/Prism/templates/cpp/pass_defaults.jinja similarity index 95% rename from sources/SIGParser/templates/cpp/pass_defaults.jinja rename to sources/Prism/templates/cpp/pass_defaults.jinja index fad7f04dd..71dc059ae 100644 --- a/sources/SIGParser/templates/cpp/pass_defaults.jinja +++ b/sources/Prism/templates/cpp/pass_defaults.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // PassDefault provides the setup/render implementations for passes whose // logic is fully self-contained (no external wiring needed). Bodies are @@ -68,7 +68,7 @@ struct PassDefault // are plain members, and SkyRender/PSSM exist TWICE (triangle_drawer and // SceneRenderWorkflow) with different per-instance state, so there is no // single object a free render() could reach. Such a pass still declares its -// whole enable decision in the .sig; the generated setup lands here and the +// whole enable decision in the .prism; the generated setup lands here and the // owning pipeline wires it in, so the owner supplies only render_func. // // A free function or a Passes::T member would not work: Passes::T is attached diff --git a/sources/SIGParser/templates/cpp/pass_defaults_cpp.jinja b/sources/Prism/templates/cpp/pass_defaults_cpp.jinja similarity index 90% rename from sources/SIGParser/templates/cpp/pass_defaults_cpp.jinja rename to sources/Prism/templates/cpp/pass_defaults_cpp.jinja index 83792f3c0..d8f74d06b 100644 --- a/sources/SIGParser/templates/cpp/pass_defaults_cpp.jinja +++ b/sources/Prism/templates/cpp/pass_defaults_cpp.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // Definitions for every pass whose setup() is fully described by // [RunAlways]/[SetupCondition]/[RenderCondition]. A [Static] pass gets @@ -16,11 +16,11 @@ // with very different import sets, so a body inlined there would need // whatever THAT pass's own condition references to be visible in EVERY one // of those files, not just the pass's own. This file imports HAL (where -// every Table:: context and SIG-declared enum lives) once, so any +// every Table:: context and Prism-declared enum lives) once, so any // [SetupCondition=`...`]/[RenderCondition=`...`] expression that only reads // a Table:: context via builder.graph->get_context() -- the // intended shape for these two options, see e.g. UpscalerSelectors -// (UpscalingDLSS.sig) or DeviceCapabilities (raytracing.sig) -- just works +// (UpscalingDLSS.prism) or DeviceCapabilities (raytracing.prism) -- just works // here, regardless of which pass's condition needs which context. A raw // Graphics-layer global instead of a Table:: context read would hit the // exact same "which TU imports what" problem this file exists to route diff --git a/sources/SIGParser/templates/cpp/pass_enums.jinja b/sources/Prism/templates/cpp/pass_enums.jinja similarity index 81% rename from sources/SIGParser/templates/cpp/pass_enums.jinja rename to sources/Prism/templates/cpp/pass_enums.jinja index 5c43cb4a7..4c17978eb 100644 --- a/sources/SIGParser/templates/cpp/pass_enums.jinja +++ b/sources/Prism/templates/cpp/pass_enums.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #include "pass_ids.h" export module FrameGraphAutogen:Passes.{{pass.name}}; diff --git a/sources/SIGParser/templates/cpp/pass_ids.jinja b/sources/Prism/templates/cpp/pass_ids.jinja similarity index 75% rename from sources/SIGParser/templates/cpp/pass_ids.jinja rename to sources/Prism/templates/cpp/pass_ids.jinja index 58d3f0cbf..f29df78a0 100644 --- a/sources/SIGParser/templates/cpp/pass_ids.jinja +++ b/sources/Prism/templates/cpp/pass_ids.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/sources/SIGParser/templates/cpp/pass_view.jinja b/sources/Prism/templates/cpp/pass_view.jinja similarity index 83% rename from sources/SIGParser/templates/cpp/pass_view.jinja rename to sources/Prism/templates/cpp/pass_view.jinja index 9f2233f63..cae551186 100644 --- a/sources/SIGParser/templates/cpp/pass_view.jinja +++ b/sources/Prism/templates/cpp/pass_view.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/sources/SIGParser/templates/cpp/passes.jinja b/sources/Prism/templates/cpp/passes.jinja similarity index 86% rename from sources/SIGParser/templates/cpp/passes.jinja rename to sources/Prism/templates/cpp/passes.jinja index 047e7d613..68b2a2b35 100644 --- a/sources/SIGParser/templates/cpp/passes.jinja +++ b/sources/Prism/templates/cpp/passes.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module FrameGraph:Passes; diff --git a/sources/SIGParser/templates/cpp/pipeline.jinja b/sources/Prism/templates/cpp/pipeline.jinja similarity index 98% rename from sources/SIGParser/templates/cpp/pipeline.jinja rename to sources/Prism/templates/cpp/pipeline.jinja index 2cd54f1e7..b72c5b99e 100644 --- a/sources/SIGParser/templates/cpp/pipeline.jinja +++ b/sources/Prism/templates/cpp/pipeline.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ {% for entry in pipeline.entries %} #include "{{entry.name}}.h" diff --git a/sources/SIGParser/templates/cpp/pso.jinja b/sources/Prism/templates/cpp/pso.jinja similarity index 96% rename from sources/SIGParser/templates/cpp/pso.jinja rename to sources/Prism/templates/cpp/pso.jinja index 2e4e7c556..22ae923b6 100644 --- a/sources/SIGParser/templates/cpp/pso.jinja +++ b/sources/Prism/templates/cpp/pso.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module HAL:Autogen.PSO.{{pso.name}}; diff --git a/sources/SIGParser/templates/cpp/psos.jinja b/sources/Prism/templates/cpp/psos.jinja similarity index 94% rename from sources/SIGParser/templates/cpp/psos.jinja rename to sources/Prism/templates/cpp/psos.jinja index 2eebff6ff..b05b11507 100644 --- a/sources/SIGParser/templates/cpp/psos.jinja +++ b/sources/Prism/templates/cpp/psos.jinja @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ module HAL; import Core; @@ -32,7 +32,7 @@ void init_indirect_commands(HAL::Device& device, enum_arrays (no owning DDGI -// instance exists yet, see DDGISelectors' own comment, ddgi.sig) into +// instance exists yet, see DDGISelectors' own comment, ddgi.prism) into // Table::DDGISelectors for the generated setups below to read. Must run // before graph.setup(), same reasoning as VoxelGI::update_frame() -- called // from main.cpp next to voxel_gi->update_frame(graph). export void ddgi_update_selectors(FrameGraph::Graph& graph); // Diagnostic (see [[project-ddgi]] planning notes): "Disable sky fallback" -// -- read by main.cpp when filling the shared FrameInfo (FrameData.sig's +// -- read by main.cpp when filling the shared FrameInfo (FrameData.prism's // debugFlags, RTXDebugFlags::DisableSkyFallback bit) each frame, so // MyMissShader (raytracing.hlsl) can return flat black instead of the sky // cubemap on a miss. Lives here (a DDGI-motivated toggle) even though its @@ -36,7 +36,7 @@ export void ddgi_update_selectors(FrameGraph::Graph& graph); // in the engine shares the one miss shader. export bool ddgi_sky_fallback_disabled(); -// [Multiple=5] pass render bodies (ddgi.sig) -- plain free functions, not +// [Multiple=5] pass render bodies (ddgi.prism) -- plain free functions, not // PassDefault::render specializations, because [Multiple] passes are // runtime-wired via render_funcs[N] arrays, not the [Static] generated- // specialization path (see PSSM_Cascade/PSSM.ixx's own template ctor, the diff --git a/sources/RenderSystem/Effects/DDGI/DDGIGraph.cpp b/sources/RenderSystem/Effects/DDGI/DDGIGraph.cpp index 9ad8146da..7b3da3396 100644 --- a/sources/RenderSystem/Effects/DDGI/DDGIGraph.cpp +++ b/sources/RenderSystem/Effects/DDGI/DDGIGraph.cpp @@ -13,7 +13,7 @@ using namespace HAL; namespace { // No owning DDGI instance exists yet (see DDGISelectors' own comment, - // ddgi.sig), so this is a free-standing Meyer's-singleton VariableContext, + // ddgi.prism), so this is a free-standing Meyer's-singleton VariableContext, // same pattern GBufferDownsampler's own g_roughness_threshold/ // g_metallic_threshold use (VoxelGIGraph.cpp). VariableContext& ddgi_debug_context() @@ -33,12 +33,12 @@ namespace // Master on/off for whether the probe-volume term actually gets added // anywhere it's sampled (DDGIProbeTrace's own self-feedback AND // TraceIndirectDiffuse's per-pixel term) -- see DDGIInfo::flags' own - // comment (ddgi.sig). DDGI keeps tracing/convolving either way, so + // comment (ddgi.prism). DDGI keeps tracing/convolving either way, so // toggling this back on doesn't need to reconverge from cold; it just // excludes/includes the contribution from actual lighting, for an A/B // comparison against plain 1-bounce RTX. Variable g_ddgi_use_fallback = { true, "Use probe fallback", &ddgi_debug_context() }; - // A/B toggle: real GPU-driven ExecuteIndirect(DISPATCH_RAYS) (raytracing.sig's + // A/B toggle: real GPU-driven ExecuteIndirect(DISPATCH_RAYS) (raytracing.prism's // DispatchRaysArguments/DispatchRaysArgsBuild) vs. the original CPU-recorded // fixed-size dispatch_rays. v1 wiring makes both launch the identical // Width/Height (this cascade's full atlas), so toggling this should be a @@ -95,7 +95,7 @@ namespace // raytracing.hlsl). Variable g_ddgi_disable_sky_fallback = { false, "Disable sky fallback (all RTX)", &ddgi_debug_context() }; // Scales DDGIProbeTrace's own multi-bounce self-feedback term (see - // DDGIInfo::probe_spacing.w's own comment, ddgi.sig) -- turns two probes + // DDGIInfo::probe_spacing.w's own comment, ddgi.prism) -- turns two probes // feeding each other's irradiance back across frames into a dial rather // than an all-or-nothing switch (that's "Use fallback while generating // probes" above). 1.0 = unscaled (the original behavior); lower values @@ -105,7 +105,7 @@ namespace // untouched. Variable g_ddgi_feedback_strength = { 1.0f, "Feedback strength", &ddgi_debug_context(), 0.0f, 2.0f }; // Which occlusion test ddgi_sample_irradiance (ddgi_sample.hlsl) uses per - // trilinear probe corner -- see DDGIOcclusionMode's own comment (ddgi.sig) + // trilinear probe corner -- see DDGIOcclusionMode's own comment (ddgi.prism) // for what each value does. Enum-typed Variable renders as a combo box // (ParameterWindow.ixx's magic_enum-driven dropdown, same as any other // enum Variable in this codebase) -- no separate bool toggles needed. @@ -113,7 +113,7 @@ namespace // call site always used a traced visibility ray before this toggle // existed). Variable g_ddgi_occlusion_mode = { DDGIOcclusionMode::RTXRay, "Occlusion test", &ddgi_debug_context() }; - // See DDGIInfo::grid_min.w's own comment (ddgi.sig) -- fraction of this + // See DDGIInfo::grid_min.w's own comment (ddgi.prism) -- fraction of this // cascade's own probe spacing added on top of a probe's stored hit // distance before ddgi_probe_depth_test (ddgi_sample.hlsl, // DDGIOcclusionMode::ProbeDepthTest) calls a shading point occluded. @@ -173,12 +173,12 @@ namespace // in ddgi_update_selectors (before any pass runs) rather than per render // call, so every pass of one cascade agrees on it. Mirrored into // DDGIInfo::rays_per_probe.yz (ddgi_make_info) -- see that field's own - // comment (ddgi.sig) for why those two lanes were free to reuse. + // comment (ddgi.prism) for why those two lanes were free to reuse. uint32_t g_ddgi_stagger_k[Constants::DDGI_CascadeCount] = { 1, 1, 1, 1, 1 }; uint32_t g_ddgi_stagger_bucket[Constants::DDGI_CascadeCount] = { 0, 0, 0, 0, 0 }; // Toroidal-scroll tracking (see [[project-ddgi]] planning notes and - // DDGIProbeResidencyMarkData's own comment, ddgi.sig): the grid's window + // DDGIProbeResidencyMarkData's own comment, ddgi.prism): the grid's window // origin (in integer probe-cell units) remembered per cascade across // frames, so ddgi_probe_select_render -- which runs once per cascade per // frame, first in the pipeline among DDGI's own passes -- can compute @@ -256,7 +256,7 @@ namespace // so the grid doesn't jitter continuously as the camera moves -- only steps // when the camera crosses a spacing-sized cell boundary. Toroidal (ring- // buffer) addressing is real now (ddgi_wrap/ddgi_probe_world_pos/ -// ddgi_world_to_slot, ddgi.sig): a probe's atlas slot is a fixed function of +// ddgi_world_to_slot, ddgi.prism): a probe's atlas slot is a fixed function of // its own absolute world-cell, independent of where this window currently // sits, so most probes keep their exact stored history across a step instead // of every probe's slot meaning a different world position each time the @@ -293,23 +293,23 @@ Slots::DDGIInfo ddgi_make_info(float3 camera_pos, uint32_t cascade_index) // The real per-probe ray budget now -- DDGIProbeTrace dispatches exactly // this many spherical-fibonacci rays per probe, independent of the // output atlas's own texel resolution (see DDGI_ProbeRayCount's own - // comment, ddgi.sig, for why that decoupling replaced the old 1-ray- + // comment, ddgi.prism, for why that decoupling replaced the old 1-ray- // per-texel scheme). info.GetRays_per_probe().x = Constants::DDGI_ProbeRayCount; // This cascade's rotating retrace subset -- see g_ddgi_stagger_k/ // g_ddgi_stagger_bucket's own comment and rays_per_probe's field comment - // (ddgi.sig) for what these drive (DDGIProbeResidencyMark's compaction + // (ddgi.prism) for what these drive (DDGIProbeResidencyMark's compaction // gate). info.GetRays_per_probe().y = g_ddgi_stagger_k[cascade_index]; info.GetRays_per_probe().z = g_ddgi_stagger_bucket[cascade_index]; info.GetAtlas_info().x = Constants::DDGI_ProbeTexelSize; - // See DDGIInfo's own comment (ddgi.sig) for what these offsets are. + // See DDGIInfo's own comment (ddgi.prism) for what these offsets are. info.GetCascade_info().x = cascade_index * probe_count; info.GetCascade_info().y = cascade_index * Constants::DDGI_ProbeCountY; info.GetCascade_info().z = cascade_index; info.GetCascade_info().w = (cascade_index == Constants::DDGI_CascadeCount - 1) ? 1 : 0; info.GetFlags().x = g_ddgi_use_fallback ? 1 : 0; info.GetFlags().y = g_ddgi_use_indirect_dispatch ? 1 : 0; - // See DDGIInfo::flags' own comment (ddgi.sig) for the bit layout. + // See DDGIInfo::flags' own comment (ddgi.prism) for the bit layout. info.GetFlags().z = (g_ddgi_cull_coarsest_cascade ? (uint32_t)DDGIControlFlags::CullCoarsestCascade : 0u) | (g_ddgi_enable_residency_culling ? 0u : (uint32_t)DDGIControlFlags::DisableResidencyCulling) | (g_ddgi_jitter_rays ? (uint32_t)DDGIControlFlags::JitterRays : 0u) @@ -320,14 +320,14 @@ Slots::DDGIInfo ddgi_make_info(float3 camera_pos, uint32_t cascade_index) return info; } -// v1 scaffold: naive round-robin budgeting is deferred (see ddgi.sig's own +// v1 scaffold: naive round-robin budgeting is deferred (see ddgi.prism's own // comment) -- stamps every probe's last_full_update_frame to 0 every frame. // Enough to prove the SIG declarations/FrameGraph wiring compile and run // cleanly, and to touch DDGI_Probes for real (see // [[feedback_pso_empty_slots_assert]] for why a truly empty body isn't an // option). Plain free function, not a PassDefault::render specialization // -- see DDGI.ixx's own comment on why [Multiple=5] passes are wired this -// way (ddgi_register_passes). setup() is still fully generated (ddgi.sig's +// way (ddgi_register_passes). setup() is still fully generated (ddgi.prism's // own [SetupCondition]). void ddgi_probe_select_render(Passes::DDGIProbeSelect::Context& data, FrameContext& context) { @@ -363,7 +363,7 @@ void ddgi_probe_select_render(Passes::DDGIProbeSelect::Context& data, FrameConte int delta_y = window_origin.y - prev.y; int delta_z = window_origin.z - prev.z; - // See DDGIProbeResidencyMarkData's own comment (ddgi.sig) for + // See DDGIProbeResidencyMarkData's own comment (ddgi.prism) for // the derivation: lo = min(old_origin, new_origin) on this axis, // count = |delta| clamped to this axis's own probe count -- // clamping to the grid size is what turns a large jump @@ -452,7 +452,7 @@ void ddgi_probe_residency_mark_render(Passes::DDGIProbeResidencyMark::Context& d } // Packs this cascade's DDGI_DispatchRaysArgs record (DispatchRaysArguments, -// raytracing.sig) from the RTXPSO's own shader-table addresses plus this +// raytracing.prism) from the RTXPSO's own shader-table addresses plus this // cascade's dispatch size, so DDGIProbeTrace's own render() (below) can // optionally issue a real ExecuteIndirect(DISPATCH_RAYS) instead of a fixed // dispatch_rays call -- see g_ddgi_use_indirect_dispatch's own comment for @@ -480,7 +480,7 @@ void ddgi_probe_dispatch_args_build_render(Passes::DDGIProbeDispatchArgsBuild::C params.GetMiss_addr() = split_address(rtx.miss_ids.get_resource_address().get_ptr()); params.GetMiss_stride() = static_cast(sizeof(HAL::shader_identifier)); params.GetMiss_count() = static_cast(rtx.miss_ids.get_count()); - // DDGIProbeTrace here names the RaytraceRaygen<> tag type (raytracing.sig), + // DDGIProbeTrace here names the RaytraceRaygen<> tag type (raytracing.prism), // the same unqualified name RTX::get().render() below uses // -- not the Passes::DDGIProbeTrace FrameGraph PassNode type. params.GetRaygen_addr() = split_address(rtx.raygen_address().get_ptr()); @@ -493,7 +493,7 @@ void ddgi_probe_dispatch_args_build_render(Passes::DDGIProbeDispatchArgsBuild::C // probes that are both needed AND due this frame, via the same // compaction gate that residency culling uses. rays/probe is // DDGI_ProbeRayCount now, not DDGI_ProbeTexelSize^2 -- see that - // constant's own comment (ddgi.sig) for the ray-count/texel-resolution + // constant's own comment (ddgi.prism) for the ray-count/texel-resolution // decoupling. params.GetWidth_multiplier() = Constants::DDGI_ProbeRayCount; params.GetCount_index() = cascade; @@ -514,7 +514,7 @@ void ddgi_probe_dispatch_args_build_render(Passes::DDGIProbeDispatchArgsBuild::C // skip is real now (residency culling + the rotating per-probe stagger gate, // both in ddgi_probe_trace.hlsl); ray count is now a real, independently // tunable budget too (DDGI_ProbeRayCount, decoupled from the output atlas's -// own texel resolution -- see that constant's own comment, ddgi.sig). Plain +// own texel resolution -- see that constant's own comment, ddgi.prism). Plain // free function -- see ddgi_probe_select_render's own comment on why. void ddgi_probe_trace_render(Passes::DDGIProbeTrace::Context& data, FrameContext& context, const VSM& vsm) { @@ -558,7 +558,7 @@ void ddgi_probe_trace_render(Passes::DDGIProbeTrace::Context& data, FrameContext } // The coarsest cascade is exempt from residency culling by default (see - // DDGIControlFlags::CullCoarsestCascade's own comment, ddgi.sig) -- + // DDGIControlFlags::CullCoarsestCascade's own comment, ddgi.prism) -- // unconditionally, 100% of its probes, every frame, so compaction never // actually drops anything for it. Confirmed via a temporary CPU readback // (ddgi_compacted_count.temp / ddgi_cascade4_residency.temp, ask before @@ -598,7 +598,7 @@ void ddgi_probe_trace_render(Passes::DDGIProbeTrace::Context& data, FrameContext compute.set_pipeline(RTX::get().rtx.m_dxrStateObject); // `offset` (element index into DDGI_DispatchRaysArgs, one record per - // cascade -- ddgi.sig's own comment) -- missing this made every + // cascade -- ddgi.prism's own comment) -- missing this made every // cascade read element 0 regardless of which cascade was actually // tracing: cascades 1-4 launched with cascade 0's own needed-probe // count instead of their own. @@ -665,7 +665,7 @@ void ddgi_probe_convolve_render(Passes::DDGIProbeConvolve::Context& data, FrameC // Shows all 5 cascades' probes at once (dispatch size is // DDGI_ProbeCount*DDGI_CascadeCount; the shader decodes which cascade each // dispatch index belongs to from the shared per-cascade probe count). -// setup() is fully generated (ddgi.sig's own [SetupCondition]). +// setup() is fully generated (ddgi.prism's own [SetupCondition]). void PassDefault::render( Passes::DDGIDebug::Context& data, FrameContext& context) { @@ -700,7 +700,7 @@ void PassDefault::render( // (FrameGraph::DebugMode::DDGIIndirect, see Base.cpp's debug_source()) -- // see ddgi_indirect_debug.hlsl for the per-pixel math (picks the finest of // all 5 cascades that actually contains each pixel's world position). -// setup() is fully generated (ddgi.sig's own [SetupCondition]). +// setup() is fully generated (ddgi.prism's own [SetupCondition]). void PassDefault::render( Passes::DDGIIndirectDebug::Context& data, FrameContext& context) { diff --git a/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.cpp b/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.cpp index 2af08931e..764b8f289 100644 --- a/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.cpp +++ b/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.cpp @@ -16,7 +16,7 @@ namespace constexpr bool kHDR = true; } -// setup() is fully generated (UpscalingDLSS.sig's own [SetupCondition]). +// setup() is fully generated (UpscalingDLSS.prism's own [SetupCondition]). void PassDefault::render( Passes::UpscalingDLSS::Context& data, FrameContext& context) diff --git a/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.ixx b/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.ixx index c5a0965d3..df55f7679 100644 --- a/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.ixx +++ b/sources/RenderSystem/Effects/DLSS/UpscalingDLSS.ixx @@ -25,7 +25,7 @@ export // upscale; SMAA gates on the opposite so native rendering still gets AA. bool g_upscaling_enabled = true; - // UpscalerType itself is SIG-declared now (UpscalingDLSS.sig), so it's + // UpscalerType itself is SIG-declared now (UpscalingDLSS.prism), so it's // visible via plain `import HAL;` -- needed by autogen/pass_defaults.cpp, // a dedicated TU generated [SetupCondition]/[RenderCondition] bodies // compile in (see that file's own comment). @@ -68,8 +68,8 @@ export // Every reader may therefore test the selection ALONE -- `upscaler_type == // DLSSRR` already implies dlssrr_available && rtx_supported, and // `!= DLSSRR` already covers "RR was asked for but can't run". That is - // what keeps the generated [SetupCondition] expressions (FSR.sig, - // UpscalingDLSS*.sig, voxel.sig, nrd_sig_test.sig) down to one context + // what keeps the generated [SetupCondition] expressions (FSR.prism, + // UpscalingDLSS*.prism, voxel.prism, nrd_sig_test.prism) down to one context // read instead of three, and it is why this is a read-only reference: // assigning to it is a compile error, so the clamp in set_upscaler_type() // cannot be bypassed by a new write site. diff --git a/sources/RenderSystem/Effects/DLSS/UpscalingDLSSRR.cpp b/sources/RenderSystem/Effects/DLSS/UpscalingDLSSRR.cpp index 660592d87..b49ec993f 100644 --- a/sources/RenderSystem/Effects/DLSS/UpscalingDLSSRR.cpp +++ b/sources/RenderSystem/Effects/DLSS/UpscalingDLSSRR.cpp @@ -15,9 +15,9 @@ namespace constexpr bool kHDR = true; } -// setup() is fully generated (UpscalingDLSSRR.sig's own [SetupCondition]). +// setup() is fully generated (UpscalingDLSSRR.prism's own [SetupCondition]). // is_rtx_supported(): RTXReflectionNoise only exists when ReflectionRTX -// (voxel.sig) ran this frame, which shares this exact same prerequisite +// (voxel.prism) ran this frame, which shares this exact same prerequisite // (RTX support + DLSSRR::available()) -- keeping both gates identical is // what guarantees the resource is there whenever this pass needs it. diff --git a/sources/RenderSystem/Effects/FSR/FSR.cpp b/sources/RenderSystem/Effects/FSR/FSR.cpp index e92b5feb4..b531ccfa9 100644 --- a/sources/RenderSystem/Effects/FSR/FSR.cpp +++ b/sources/RenderSystem/Effects/FSR/FSR.cpp @@ -15,7 +15,7 @@ import HAL; using namespace FrameGraph; -// setup() is fully generated (FSR.sig's own [SetupCondition]). +// setup() is fully generated (FSR.prism's own [SetupCondition]). void PassDefault::render(Passes::FSR::Context& data, FrameContext& context) { diff --git a/sources/RenderSystem/Effects/PostProcess/SMAA.cpp b/sources/RenderSystem/Effects/PostProcess/SMAA.cpp index da03b7a6e..a2a3e2350 100644 --- a/sources/RenderSystem/Effects/PostProcess/SMAA.cpp +++ b/sources/RenderSystem/Effects/PostProcess/SMAA.cpp @@ -27,7 +27,7 @@ SMAA::SMAA() // ---- Pass function members ------------------------------------------------ - // setup() is fully generated (smaa.sig's own [SetupCondition]). + // setup() is fully generated (smaa.prism's own [SetupCondition]). m_smaa_render = [this](Passes::SMAA::Context& data, FrameGraph::FrameContext& context) { diff --git a/sources/RenderSystem/Effects/PostProcess/SMAA.ixx b/sources/RenderSystem/Effects/PostProcess/SMAA.ixx index 5d22ac120..655cf5f60 100644 --- a/sources/RenderSystem/Effects/PostProcess/SMAA.ixx +++ b/sources/RenderSystem/Effects/PostProcess/SMAA.ixx @@ -11,7 +11,7 @@ export class SMAA HAL::Texture::ptr area_tex; HAL::Texture::ptr search_tex; - // setup() is generated (smaa.sig's own [SetupCondition]) -- render only. + // setup() is generated (smaa.prism's own [SetupCondition]) -- render only. Passes::SMAA::render_func_type m_smaa_render; public: diff --git a/sources/RenderSystem/Effects/Sky.cpp b/sources/RenderSystem/Effects/Sky.cpp index 11fea8268..d54603564 100644 --- a/sources/RenderSystem/Effects/Sky.cpp +++ b/sources/RenderSystem/Effects/Sky.cpp @@ -36,7 +36,7 @@ SkyRender::SkyRender() // CubeSky: renders the atmospheric sky into a static cubemap, re-baked only // when the sun direction has changed enough to warrant it -- that decision - // is CubeSky's [PreSetup] hook plus [RenderCondition] (sky.sig) now, see + // is CubeSky's [PreSetup] hook plus [RenderCondition] (sky.prism) now, see // PassSetupDefault::pre_setup below. m_cubesky_render = [this](Passes::CubeSky::Context& data, FrameGraph::FrameContext& context) @@ -83,7 +83,7 @@ SkyRender::SkyRender() }; // Sky: full-screen sky pass that composites over the GBuffer depth. - // setup() is fully generated (sky.sig's own [RunAlways]). + // setup() is fully generated (sky.prism's own [RunAlways]). m_sky_render = [this](Passes::Sky::Context& data, FrameGraph::FrameContext& context) { auto& sky = context.graph->get_context(); @@ -109,14 +109,14 @@ SkyRender::SkyRender() // ---- PassSetupDefault ------------------------------------- -// The sun-direction diff, run once per frame before any pass's setup (sky.sig's +// The sun-direction diff, run once per frame before any pass's setup (sky.prism's // [PreSetup]). It has to be here rather than inside CubeSky's own setup because // CubeMapDownsample and CubeMapEnviromentProcessor read the result in their own // [RenderCondition]s, and nothing orders one pass's setup before another's. // // Static, so there is no SkyRender instance to hold the previous direction -- // it lives in Table::SkyState instead, which is per-Graph and therefore still -// separate between the main and asset pipelines (see its own comment, sky.sig). +// separate between the main and asset pipelines (see its own comment, sky.prism). void PassSetupDefault::pre_setup(FrameGraph::Graph& graph) { @@ -130,7 +130,7 @@ void PassSetupDefault::pre_setup(FrameGraph::Graph& graph) // ---- PassDefault -------------------------------- // Generates mipmaps for the sky cubemap whenever it has been re-baked. -// setup() is fully generated (sky.sig's own [RenderCondition]). +// setup() is fully generated (sky.prism's own [RenderCondition]). void PassDefault::render( Passes::CubeMapDownsample::Context& data, FrameContext& context) @@ -141,7 +141,7 @@ void PassDefault::render( // ---- PassDefault ---------------------- // Filters the sky cubemap into specular and diffuse IBL targets. -// setup() is fully generated (sky.sig's own [RenderCondition]). +// setup() is fully generated (sky.prism's own [RenderCondition]). void PassDefault::render( Passes::CubeMapEnviromentProcessor::Context& data, FrameContext& context) diff --git a/sources/RenderSystem/Effects/Sky.ixx b/sources/RenderSystem/Effects/Sky.ixx index 40285eacc..8eb7d304b 100644 --- a/sources/RenderSystem/Effects/Sky.ixx +++ b/sources/RenderSystem/Effects/Sky.ixx @@ -14,7 +14,7 @@ export class SkyRender HAL::Texture::ptr inscatter; // No `dir` member any more: the previous sun direction lives in - // Table::SkyState (sky.sig), which is per-Graph -- so the main and asset + // Table::SkyState (sky.prism), which is per-Graph -- so the main and asset // pipelines still keep separate histories even though the diff now runs in // a static [PreSetup] hook. Both passes' setups are generated, so only the // render halves are members. diff --git a/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.cpp b/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.cpp index f9614a093..ff7e3a8d9 100644 --- a/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.cpp @@ -10,7 +10,7 @@ import Core; using namespace FrameGraph; using namespace HAL; -// setup() is fully generated (voxel.sig's own [SetupCondition]). +// setup() is fully generated (voxel.prism's own [SetupCondition]). void PassDefault::render( Passes::IndirectRTXHalf::Context& data, FrameContext& context) @@ -58,7 +58,7 @@ void PassDefault::render( } } -// setup() is fully generated (voxel.sig's own [SetupCondition]) -- feeds +// setup() is fully generated (voxel.prism's own [SetupCondition]) -- feeds // NRD_REBLUR_Execute (REBLUR_DIFFUSE, see [[project-nrd-integration]]) and, // under DLSS-RR, RTXCombine -- gated purely on RTX/hardware support now, // independent of upscaler (NRD is the only indirect-GI denoiser). diff --git a/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.ixx b/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.ixx index 9cfcf5619..a85aafe9d 100644 --- a/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/IndirectRTX.ixx @@ -1,5 +1,5 @@ // RTX-only reference diffuse GI pass. No new exports of its own -- see -// voxel.sig's PassNode IndirectRTX doc comment. +// voxel.prism's PassNode IndirectRTX doc comment. export module Graphics:IndirectRTX; import HAL; diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.cpp b/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.cpp index f3ff19848..57f59d4f9 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.cpp @@ -14,7 +14,7 @@ using namespace HAL; // Front-end packing for NRD REBLUR_DIFFUSE/REBLUR_SPECULAR (see // [[project-nrd-integration]]), including the radiance+hitdist pack -- // exactly one candidate per channel, whichever g_indirect_source/ -// g_reflection_source actually selects (see this pass's own .sig comment +// g_reflection_source actually selects (see this pass's own .prism comment // for the full reasoning: packing/needing the OTHER candidate too was // either a wasted write (RTX side, since IndirectRTX runs regardless of // selection) or a crash (VCT side, since VoxelScreen/ScreenReflection only @@ -24,7 +24,7 @@ using namespace HAL; // there instead, see RTXCombine's own comment), so there's no reason to run // this or NRD_REBLUR_Execute (its only real consumer, same gate) while // DLSS-RR is selected. -// setup() is fully generated (nrd_sig_test.sig's own [SetupCondition]). +// setup() is fully generated (nrd_sig_test.prism's own [SetupCondition]). void PassDefault::render( Passes::NRD_GBufferPack::Context& data, FrameContext& context) diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.ixx b/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.ixx index 64e880681..ca5a1eeb2 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_GBufferPack.ixx @@ -1,5 +1,5 @@ // Front-end packing for NRD REBLUR_DIFFUSE. No new exports of its own -- see -// nrd_sig_test.sig's PassNode NRD_GBufferPack doc comment. +// nrd_sig_test.prism's PassNode NRD_GBufferPack doc comment. export module Graphics:NRD_GBufferPack; import HAL; diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_IndirectCombine.cpp b/sources/RenderSystem/Effects/VoxelGI/NRD_IndirectCombine.cpp index 4206db831..af790b047 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_IndirectCombine.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_IndirectCombine.cpp @@ -13,7 +13,7 @@ using namespace HAL; // The FSR/DLSS-side equivalent of the indirect term RTXCombine computes for // DLSS-RR (see [[project-nrd-integration]]). Runs exactly in the // complementary case to RTXCombine (which handles DLSS-RR itself). -// setup() is fully generated (nrd_sig_test.sig's own [SetupCondition]). +// setup() is fully generated (nrd_sig_test.prism's own [SetupCondition]). void PassDefault::render( Passes::NRD_IndirectCombine::Context& data, FrameContext& context) diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.cpp b/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.cpp index fb355cebf..3de45ec69 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.cpp @@ -19,11 +19,11 @@ using namespace HAL; // own comment). NRD_GBufferPack (its other input, and now the only place // that packs radiance+hitdist for NRD -- see its own comment) uses the same // gate. -// setup() is fully generated (nrd_sig_test.sig's own [SetupCondition]). +// setup() is fully generated (nrd_sig_test.prism's own [SetupCondition]). void PassDefault::pre_setup(FrameGraph::Graph& graph) { - // Same gate as [SetupCondition] (nrd_sig_test.sig) -- ensure_pools() is a + // Same gate as [SetupCondition] (nrd_sig_test.prism) -- ensure_pools() is a // real side effect [SetupCondition] can't express, so it runs here, // once per frame before graph.setup(), guarded by the identical // condition repeated (this function's whole reason to exist is that the diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.ixx b/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.ixx index f32e98221..e5dd24d7a 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_REBLUR_Execute.ixx @@ -1,5 +1,5 @@ // Real per-frame REBLUR_DIFFUSE execution. No new exports of its own -- see -// nrd_sig_test.sig's PassNode NRD_REBLUR_Execute doc comment. +// nrd_sig_test.prism's PassNode NRD_REBLUR_Execute doc comment. export module Graphics:NRD_REBLUR_Execute; import HAL; diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.cpp b/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.cpp index 0031ebe70..e7a31c4f8 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.cpp @@ -14,15 +14,15 @@ using namespace HAL; // Real per-frame SIGMA_SHADOW execution (see [[project-nrd-integration]]) -- // denoises whichever raw penumbra signal matches the selected shadow source // (ShadowRTX's, or VSM_ShadowResolve's own -- diagnostic-only for the VSM -// case, see nrd_sig_test.sig's own PassNode comment), same shape as +// case, see nrd_sig_test.prism's own PassNode comment), same shape as // NRD_REBLUR_Execute.cpp but against nvidia::NRD's separate sigma_instance // (HAL.NRD.ixx's own comment on why REBLUR and SIGMA are two independent // nrd::Instance objects, not one shared one). -// setup() is fully generated (nrd_sig_test.sig's own [SetupCondition]). +// setup() is fully generated (nrd_sig_test.prism's own [SetupCondition]). void PassDefault::pre_setup(FrameGraph::Graph& graph) { - // Same gate as [SetupCondition] (nrd_sig_test.sig) -- ensure_pools() is a + // Same gate as [SetupCondition] (nrd_sig_test.prism) -- ensure_pools() is a // real side effect [SetupCondition] can't express, so it runs here, once // per frame before graph.setup(), guarded by the identical condition // repeated, same reasoning as NRD_REBLUR_Execute's own pre_setup(). @@ -50,7 +50,7 @@ void PassDefault::render( inputs.view_z = *data.NRD_ViewZ; inputs.normal_roughness = *data.NRD_NormalRoughness; inputs.mv = *data.NRD_Mv; - // Exactly one of these is linked this frame (see nrd_sig_test.sig's own + // Exactly one of these is linked this frame (see nrd_sig_test.prism's own // [Optional] guards on both fields, keyed off the same shadow_source). inputs.penumbra_noisy = context.graph->get_context().shadow_source == ShadowSource::VSM ? *data.VSM_PCSS_ShadowNoise diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.ixx b/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.ixx index 4079befe0..69bb99cae 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_SIGMA_Execute.ixx @@ -1,5 +1,5 @@ // Real per-frame SIGMA_SHADOW execution. No new exports of its own -- see -// nrd_sig_test.sig's PassNode NRD_SIGMA_Execute doc comment. +// nrd_sig_test.prism's PassNode NRD_SIGMA_Execute doc comment. export module Graphics:NRD_SIGMA_Execute; import HAL; diff --git a/sources/RenderSystem/Effects/VoxelGI/NRD_ShadowCombine.cpp b/sources/RenderSystem/Effects/VoxelGI/NRD_ShadowCombine.cpp index af6aabe1b..0a28a8f9d 100644 --- a/sources/RenderSystem/Effects/VoxelGI/NRD_ShadowCombine.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/NRD_ShadowCombine.cpp @@ -16,7 +16,7 @@ using namespace HAL; // direct-lighting term VSM's own passes would otherwise have written. Runs // only when ShadowSource::RTXReference is selected outside DLSS-RR (see // [[project-nrd-integration]]). -// setup() is fully generated (nrd_sig_test.sig's own [SetupCondition]). +// setup() is fully generated (nrd_sig_test.prism's own [SetupCondition]). void PassDefault::render( Passes::NRD_ShadowCombine::Context& data, FrameContext& context) diff --git a/sources/RenderSystem/Effects/VoxelGI/RTXCombine.cpp b/sources/RenderSystem/Effects/VoxelGI/RTXCombine.cpp index 62c6c5061..5ec72de16 100644 --- a/sources/RenderSystem/Effects/VoxelGI/RTXCombine.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/RTXCombine.cpp @@ -11,7 +11,7 @@ import Core; using namespace FrameGraph; using namespace HAL; -// setup() is fully generated (voxel.sig's own [SetupCondition]) -- same +// setup() is fully generated (voxel.prism's own [SetupCondition]) -- same // gate as its three producers (ReflectionRTX/IndirectRTX/ShadowRTX), runs // instead of ReflCombine whenever the user has picked DLSS-RR (and it's // actually available). diff --git a/sources/RenderSystem/Effects/VoxelGI/RTXCombine.ixx b/sources/RenderSystem/Effects/VoxelGI/RTXCombine.ixx index ff41b8fbc..c59799893 100644 --- a/sources/RenderSystem/Effects/VoxelGI/RTXCombine.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/RTXCombine.ixx @@ -1,6 +1,6 @@ // Composites ReflectionRTX/IndirectRTX/ShadowRTX onto ResultTexture -- the // DLSS-RR-active counterpart to ReflCombine. No new exports of its own, see -// voxel.sig's PassNode RTXCombine doc comment. +// voxel.prism's PassNode RTXCombine doc comment. export module Graphics:RTXCombine; import HAL; diff --git a/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.cpp b/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.cpp index 38a1d1e6b..d854e1be3 100644 --- a/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.cpp @@ -10,7 +10,7 @@ import Core; using namespace FrameGraph; using namespace HAL; -// setup() is fully generated (voxel.sig's own [SetupCondition]). +// setup() is fully generated (voxel.prism's own [SetupCondition]). void PassDefault::render( Passes::ReflectionRTXHalf::Context& data, FrameContext& context) @@ -59,7 +59,7 @@ void PassDefault::render( } } -// setup() is fully generated (voxel.sig's own [SetupCondition]) -- feeds +// setup() is fully generated (voxel.prism's own [SetupCondition]) -- feeds // NRD_REBLUR_Execute (REBLUR_SPECULAR, see [[project-nrd-integration]]) and, // under DLSS-RR, RTXCombine -- gated purely on RTX/hardware support now, // independent of upscaler (NRD is the only reflection denoiser). @@ -86,7 +86,7 @@ void PassDefault::render( // binding path (RTXShadow reuses it the same way, GBuffer only) -- its // voxel-texture/cubemap fields are left unset (reads descriptor 0, an // established pattern for fields no bound shader ever samples, see the - // struct's own comment in voxel.sig). MyRaygenShaderReflectionRTXOnly + // struct's own comment in voxel.prism). MyRaygenShaderReflectionRTXOnly // never calls GetVoxels()/GetTex_cube(), and SlotID::VoxelInfo is never // bound at all -- this pass touches no voxel data whatsoever. { diff --git a/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.ixx b/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.ixx index 8c76237b9..99a09f9e8 100644 --- a/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/ReflectionRTX.ixx @@ -1,5 +1,5 @@ // RTX-only reflection pass, for DLSS-RR's consumption. No new exports of its -// own -- see voxel.sig's PassNode ReflectionRTX doc comment for why this is +// own -- see voxel.prism's PassNode ReflectionRTX doc comment for why this is // separate from ScreenReflection. export module Graphics:ReflectionRTX; diff --git a/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.cpp b/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.cpp index 6eaa788a4..9acbd015d 100644 --- a/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.cpp @@ -11,7 +11,7 @@ import Core; using namespace FrameGraph; using namespace HAL; -// setup() is fully generated (voxel.sig's own [SetupCondition]) -- feeds +// setup() is fully generated (voxel.prism's own [SetupCondition]) -- feeds // RTXCombine (DLSS-RR) unconditionally, and additionally feeds // NRD_SIGMA_Execute/NRD_ShadowCombine via VSM_ShadowNoise whenever // ShadowSource::RTXReference is selected outside DLSS-RR (see diff --git a/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.ixx b/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.ixx index 304a920f6..c68a3dafc 100644 --- a/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/ShadowRTX.ixx @@ -1,5 +1,5 @@ // RTX-only reference shadow pass. No new exports of its own -- see -// voxel.sig's PassNode ShadowRTX doc comment. +// voxel.prism's PassNode ShadowRTX doc comment. export module Graphics:ShadowRTX; import HAL; diff --git a/sources/RenderSystem/Effects/VoxelGI/VoxelGI.ixx b/sources/RenderSystem/Effects/VoxelGI/VoxelGI.ixx index 581e80ed6..81e63c056 100644 --- a/sources/RenderSystem/Effects/VoxelGI/VoxelGI.ixx +++ b/sources/RenderSystem/Effects/VoxelGI/VoxelGI.ixx @@ -109,7 +109,7 @@ private: void voxelize(MeshRenderContext::ptr& context, main_renderer* r, Graph& graph); // Pass function members — bodies defined in VoxelGIGraph.cpp. Render only: - // every one of these passes states its enable condition in voxel.sig and + // every one of these passes states its enable condition in voxel.prism and // gets a generated setup (PassSetupDefault, pass_defaults.h). Passes::Voxelize::render_func_type m_voxelize_render; Passes::Lighting::render_func_type m_lighting_render; @@ -147,7 +147,7 @@ public: void pass_data(FrameGraph::TaskBuilder& builder); // Once per frame, before graph.setup(): mirrors the Variable toggles - // above into Table::VoxelGISelectors (voxel.sig) for the generated setups + // above into Table::VoxelGISelectors (voxel.prism) for the generated setups // to read, and does the voxel-bounds/VoxelInfo update that used to live in // Voxelize's own setup lambda. Both need a VoxelGI instance, which a // generated static setup has no way to reach. diff --git a/sources/RenderSystem/Effects/VoxelGI/VoxelGIGraph.cpp b/sources/RenderSystem/Effects/VoxelGI/VoxelGIGraph.cpp index 8fa2c5c25..caf7f3359 100644 --- a/sources/RenderSystem/Effects/VoxelGI/VoxelGIGraph.cpp +++ b/sources/RenderSystem/Effects/VoxelGI/VoxelGIGraph.cpp @@ -185,7 +185,7 @@ void Texture3DRefTiles::zero_tiles(HAL::CommandList& list) void VoxelGI::update_frame(FrameGraph::Graph& graph) { - // Mirror of the GUI toggles for the generated setups (voxel.sig's own + // Mirror of the GUI toggles for the generated setups (voxel.prism's own // VoxelGISelectors). debug_voxel_trace is DebugContext::mode reduced to the // single test VoxelDebug makes -- DebugMode is a plain C++ enum, so a // generated condition cannot name its enumerators. @@ -248,12 +248,12 @@ void VoxelGI::pass_data(FrameGraph::TaskBuilder& builder) } -// [Static] (see voxel.sig) -- this used to be a runtime-wired +// [Static] (see voxel.prism) -- this used to be a runtime-wired // add_library_pass with no call site left anywhere assigning it into a // pipeline (dead: never ran, before or after the compute rewrite). It is // fully stateless, so PassDefault + a -// MainPipeline listing (test.sig) is the right shape, matching IndirectRTX. -// setup() is fully generated (voxel.sig's own [RunAlways]). +// MainPipeline listing (test.prism) is the right shape, matching IndirectRTX. +// setup() is fully generated (voxel.prism's own [RunAlways]). namespace { @@ -270,7 +270,7 @@ namespace } // Pure eyeball-tuned values -- see TileClassifyData's own comment - // (pssm.sig) for what they gate. + // (pssm.prism) for what they gate. Variable g_roughness_threshold = { 0.5f, "Reflection roughness threshold", &tile_classify_context(), 0.0f, 1.0f }; Variable g_metallic_threshold = { 0.05f, "Reflection metallic threshold", &tile_classify_context(), 0.0f, 1.0f }; } @@ -402,7 +402,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- Voxelize ------------------------------------------------------- - // setup() is fully generated (voxel.sig's own [SetupCondition]); the voxel- + // setup() is fully generated (voxel.prism's own [SetupCondition]); the voxel- // bounds/VoxelInfo update it used to also do now runs in update_frame(). m_voxelize_render = [this](Passes::Voxelize::Context& data, FrameGraph::FrameContext& context) @@ -432,7 +432,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- Lighting ------------------------------------------------------- - // setup() is fully generated (voxel.sig's own [SetupCondition]). + // setup() is fully generated (voxel.prism's own [SetupCondition]). m_lighting_render = [this](Passes::Lighting::Context& data, FrameGraph::FrameContext& context) { @@ -530,7 +530,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- Mipmapping ----------------------------------------------------- - // setup() is fully generated (voxel.sig's own [SetupCondition]). + // setup() is fully generated (voxel.prism's own [SetupCondition]). m_mipmapping_render = [this](Passes::Mipmapping::Context& data, FrameGraph::FrameContext& context) { @@ -610,7 +610,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // selected upscaler. No availability re-check: g_upscaler_type can't // hold an unavailable type (see its invariant, UpscalingDLSS.ixx). - // setup() is fully generated (UpscalingDLSSRR.sig's own [SetupCondition]). + // setup() is fully generated (UpscalingDLSSRR.prism's own [SetupCondition]). m_normalroughnessrepack_render = [this](Passes::NormalRoughnessRepack::Context& data, FrameGraph::FrameContext& context) { @@ -634,7 +634,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- ReflCombine ---------------------------------------------------- - // setup() is fully generated (voxel.sig's own [SetupCondition]). + // setup() is fully generated (voxel.prism's own [SetupCondition]). m_reflcombine_render = [this](Passes::ReflCombine::Context& data, FrameGraph::FrameContext& context) { @@ -663,7 +663,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- VoxelDebug ----------------------------------------------------- - // setup() is fully generated (voxel.sig's own [SetupCondition]). + // setup() is fully generated (voxel.prism's own [SetupCondition]). m_voxeldebug_render = [this](Passes::VoxelDebug::Context& data, FrameGraph::FrameContext& context) { @@ -709,7 +709,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- VoxelScreen (voxel-cone-traced indirect GI, NRD source) -------- - // setup() is fully generated (voxel.sig's own [SetupCondition]). + // setup() is fully generated (voxel.prism's own [SetupCondition]). m_voxelscreen_render = [this](Passes::VoxelScreen::Context& data, FrameGraph::FrameContext& context) { @@ -750,7 +750,7 @@ VoxelGI::VoxelGI(Scene::ptr& scene, VSM& vsm) :scene(scene), vsm(vsm), VariableC // ---- ScreenReflection (voxel-cone-traced reflection, NRD source) ---- - // setup() is fully generated (voxel.sig's own [SetupCondition]). + // setup() is fully generated (voxel.prism's own [SetupCondition]). m_screenreflection_render = [this](Passes::ScreenReflection::Context& data, FrameGraph::FrameContext& context) { diff --git a/sources/RenderSystem/FrameGraph/FrameGraph.Base.ixx b/sources/RenderSystem/FrameGraph/FrameGraph.Base.ixx index 64853eeeb..88a261c55 100644 --- a/sources/RenderSystem/FrameGraph/FrameGraph.Base.ixx +++ b/sources/RenderSystem/FrameGraph/FrameGraph.Base.ixx @@ -137,7 +137,7 @@ public: ExclusiveRead = (1 << 14), // This access must not make the graph enable the pass that performs it - // ([SkipEnablement] in the .sig). The cull enables every writer of an + // ([SkipEnablement] in the .prism). The cull enables every writer of an // enabled resource, and for a Static resource it does so regardless of // pass order — so a debug pass that only annotates a shared buffer // (DDGIIndirectDebug writing DDGI_ProbeResidencyPending) would keep @@ -223,7 +223,7 @@ public: // Raw access to the handler's Desc, so LoadGraph can copy one link's desc // to the next without knowing the concrete Desc type. Safe because a - // resource's handler type is fixed by its .sig declaration and never + // resource's handler type is fixed by its .prism declaration and never // changes for a given ResourceID. virtual void* desc_data() = 0; virtual size_t desc_size() const = 0; @@ -256,7 +256,7 @@ public: // Stable across frames: ResourceChain::reset_frame() rewinds pos but never // clears items, so link N is the same object next frame. That is what makes // this usable as a persisted key -- given the same generated ID space, which - // a plan header must check, since editing a .sig renumbers ResourceID. + // a plan header must check, since editing a .prism renumbers ResourceID. struct ResourceVersion { ResourceID id = ResourceID::Count; @@ -1241,7 +1241,7 @@ public: // null-derefed several calls later inside HAL code with an access // violation address that named neither the resource nor the pass. // Usual cause: this pass is registered in the Pipeline block - // (test.sig) BEFORE whichever pass creates/writes this resource -- + // (test.prism) BEFORE whichever pass creates/writes this resource -- // Graph::setup() runs every pass's setup() in pipeline declaration // order, so a resource's creator must appear earlier in that block // than anything that need()s it. Fix the pipeline order, not this @@ -1688,7 +1688,7 @@ public: // here is an index or an ID, so replay is a flat walk that fills the // persistent objects the builder already owns. // - // Shape mirrors the PrecompiledPass/PrecompiledResourceInfo tables SIGParser + // Shape mirrors the PrecompiledPass/PrecompiledResourceInfo tables Prism // already emits per pipeline -- this is the runtime-pruned instance of that // same template, which is why the two use the same vocabulary. @@ -1791,7 +1791,7 @@ public: std::vector> history_links; // Must equal generated_id_space_hash to be usable. A plan recorded before - // a .sig edit renumbered PassID/ResourceID would not fail to apply, it + // a .prism edit renumbered PassID/ResourceID would not fail to apply, it // would apply to the WRONG passes and resources -- so this is checked // before anything else, and a mismatch is a miss, not an error. uint64_t id_space_hash = 0; diff --git a/sources/RenderSystem/FrameGraph/FrameGraph.cpp b/sources/RenderSystem/FrameGraph/FrameGraph.cpp index 31548e400..018ccab38 100644 --- a/sources/RenderSystem/FrameGraph/FrameGraph.cpp +++ b/sources/RenderSystem/FrameGraph/FrameGraph.cpp @@ -21,7 +21,7 @@ namespace FrameGraph { char message[320]; std::snprintf(message, sizeof(message), - "FrameGraph::TaskBuilder::need(): resource '%s' needed by pass '%ls' before it was created this frame -- move '%ls' after whichever pass creates/writes '%s' in the Pipeline block (test.sig)", + "FrameGraph::TaskBuilder::need(): resource '%s' needed by pass '%ls' before it was created this frame -- move '%ls' after whichever pass creates/writes '%s' in the Pipeline block (test.prism)", resource_id_name(id), requesting_pass ? requesting_pass->name.ptr : L"?", requesting_pass ? requesting_pass->name.ptr : L"?", resource_id_name(id)); ::Core::assert_fail(message, __FILE__, __LINE__); diff --git a/sources/RenderSystem/FrameGraph/PassDefaults.cpp b/sources/RenderSystem/FrameGraph/PassDefaults.cpp index 445c0499b..97642ef47 100644 --- a/sources/RenderSystem/FrameGraph/PassDefaults.cpp +++ b/sources/RenderSystem/FrameGraph/PassDefaults.cpp @@ -83,7 +83,7 @@ struct ShadowsFlowNode : FlowGraph::GraphNode }; // ── ResultCreation ----------------------------------------------------------- -// setup() is fully generated (helpers.sig's [RenderCondition = `false`]) -- +// setup() is fully generated (helpers.prism's [RenderCondition = `false`]) -- // this pass exists purely to keep swapchain graph-tracked, never renders. void PassDefault::render( @@ -91,7 +91,7 @@ void PassDefault::render( // ---- Profiler --------------------------------------------------------------- -// setup() is fully generated (scene.sig's [RenderCondition = `false`]) -- +// setup() is fully generated (scene.prism's [RenderCondition = `false`]) -- // this pass never actually renders itself (some other UI/overlay pass owns // the real profiler drawing), it exists purely to keep itself graph-tracked. @@ -100,7 +100,7 @@ void PassDefault::render( // ---- RTXShadow -------------------------------------------------------------- -// setup() is fully generated (raytracing.sig's own [RenderCondition]). +// setup() is fully generated (raytracing.prism's own [RenderCondition]). void PassDefault::render( Passes::RTXShadow::Context& data, FrameGraph::FrameContext& context) @@ -177,7 +177,7 @@ void PassDefault::render( // render_size / upscale_size - keeps the shadow's screen-space search // reach a constant fraction of the DISPLAY resolution, regardless of // DLSS's current render scale (frame.frame_size varies, upscale_size - // doesn't). See PixelStepScale's doc comment in SS_Shadow.sig. + // doesn't). See PixelStepScale's doc comment in SS_Shadow.prism. dispatchParameters.GetPixelStepScale() = float(frame.frame_size.x) / float(frame.upscale_size.x); compute.set(dispatchParameters); @@ -214,7 +214,7 @@ void PassDefault::render( // Casts primary camera rays via the ColorRTX raygen (ColorPass hit/miss) and // writes the traced color to ColorOutput. On-demand: only enabled when a // consumer (the debug view) needs ColorOutput. -// setup() is fully generated (raytracing.sig's own [SetupCondition]). +// setup() is fully generated (raytracing.prism's own [SetupCondition]). void PassDefault::render( Passes::RTXColorPass::Context& data, FrameGraph::FrameContext& context) diff --git a/sources/RenderSystem/FrameGraph/autogen/context_deps.h b/sources/RenderSystem/FrameGraph/autogen/context_deps.h index d1097bc35..cf956a03e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/context_deps.h +++ b/sources/RenderSystem/FrameGraph/autogen/context_deps.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // Which Table:: context fields each pass's generated setup actually reads. // @@ -32,7 +32,7 @@ namespace FrameGraph // Fingerprint of this generated ID space (every PassID and ResourceID name, in // enum order). A serialized graph plan stores passes and resources by ID; if a -// .sig edit renumbers those enums, a plan from before the edit would not fail +// .prism edit renumbers those enums, a plan from before the edit would not fail // to load, it would misapply -- wrong resource, wrong barriers. A plan whose // header does not carry this exact value must be rejected. constexpr unsigned long long generated_id_space_hash = 6219244375456147750ull; @@ -145,7 +145,7 @@ struct PassContextDeps ContextFieldMask optional_fields; // False when some part of the expression was a raw backtick span, or named - // something that is not a SIG-declared context. The mask is then a LOWER + // something that is not a Prism-declared context. The mask is then a LOWER // BOUND, not the full set: treat the pass as always dirty. Under-reporting // a dependency is the only failure mode here that is silent, so it is made // explicit rather than assumed away. diff --git a/sources/RenderSystem/FrameGraph/autogen/context_snapshot.cpp b/sources/RenderSystem/FrameGraph/autogen/context_snapshot.cpp index bcf179397..1e127bdeb 100644 --- a/sources/RenderSystem/FrameGraph/autogen/context_snapshot.cpp +++ b/sources/RenderSystem/FrameGraph/autogen/context_snapshot.cpp @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // Reads every Table:: context field into a flat ContextSnapshot, so a pass whose // inputs are unchanged can skip re-running its setup condition. @@ -10,7 +10,7 @@ // A separate translation unit for the same reason as autogen/pass_defaults.cpp: // context_deps.h is included from a global module fragment and cannot name a // Table:: type, but this file imports HAL once and can therefore reach every -// context regardless of which .sig declared it. +// context regardless of which .prism declared it. // context_deps.h goes in the global module fragment, not after `module // Graphics;` the way pass_defaults.cpp includes its own header: this one pulls // , and a standard header textually included in a module PURVIEW diff --git a/sources/RenderSystem/FrameGraph/autogen/enums.h b/sources/RenderSystem/FrameGraph/autogen/enums.h index cd4f227a9..99b01dbf3 100644 --- a/sources/RenderSystem/FrameGraph/autogen/enums.h +++ b/sources/RenderSystem/FrameGraph/autogen/enums.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #include "pass_ids.h" export module FrameGraphAutogen:Passes.; diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/AssetGBuffer.h b/sources/RenderSystem/FrameGraph/autogen/pass/AssetGBuffer.h index 4b954809c..a0ee7eb0e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/AssetGBuffer.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/AssetGBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -74,7 +74,7 @@ class AssetGBuffer : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/AssetMip.h b/sources/RenderSystem/FrameGraph/autogen/pass/AssetMip.h index af8fbff0f..81da70b71 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/AssetMip.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/AssetMip.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/AssetPipeline.pipeline.h b/sources/RenderSystem/FrameGraph/autogen/pass/AssetPipeline.pipeline.h index 2525f718a..401bf9f86 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/AssetPipeline.pipeline.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/AssetPipeline.pipeline.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #include "ResultCreation.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/AssetPreview.h b/sources/RenderSystem/FrameGraph/autogen/pass/AssetPreview.h index b4891aa15..2c345a2f0 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/AssetPreview.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/AssetPreview.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/BlueNoise.h b/sources/RenderSystem/FrameGraph/autogen/pass/BlueNoise.h index d2f51bc74..f91448af1 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/BlueNoise.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/BlueNoise.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -31,7 +31,7 @@ class BlueNoise : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapDownsample.h b/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapDownsample.h index 7717781e6..482bd0ea6 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapDownsample.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapDownsample.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapEnviromentProcessor.h b/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapEnviromentProcessor.h index b41bec9c3..de2ca5914 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapEnviromentProcessor.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/CubeMapEnviromentProcessor.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -56,7 +56,7 @@ class CubeMapEnviromentProcessor : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/CubeSky.h b/sources/RenderSystem/FrameGraph/autogen/pass/CubeSky.h index ebcea5360..8baf053bf 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/CubeSky.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/CubeSky.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -31,7 +31,7 @@ class CubeSky : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIDebug.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIDebug.h index 5026f1fe5..dc8ab958b 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIDebug.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIDebug.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIIndirectDebug.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIIndirectDebug.h index 02ee78727..64f0c4269 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIIndirectDebug.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIIndirectDebug.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -77,7 +77,7 @@ class DDGIIndirectDebug : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeConvolve.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeConvolve.h index e6e95a2da..ebcf36fb2 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeConvolve.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeConvolve.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeDispatchArgsBuild.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeDispatchArgsBuild.h index 709fa2ee2..e5bbdab3e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeDispatchArgsBuild.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeDispatchArgsBuild.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeResidencyMark.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeResidencyMark.h index e7950bdf7..07a28687d 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeResidencyMark.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeResidencyMark.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h index 505fa4e40..08f556d62 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -97,7 +97,7 @@ class DDGIProbeSelect : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h index 6485e0a36..eb3290ef5 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -104,7 +104,7 @@ class DDGIProbeTrace : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/FSR.h b/sources/RenderSystem/FrameGraph/autogen/pass/FSR.h index b53591893..e392c1e89 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/FSR.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/FSR.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -35,7 +35,7 @@ class FSR : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h b/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h index 991a86e40..e0055a07e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -96,7 +96,7 @@ class GBufferDownsampler : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTX.h b/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTX.h index 291cb8335..240eb6ee3 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTX.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTX.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -105,7 +105,7 @@ class IndirectRTX : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h b/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h index e52c2247e..f98aff37b 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -85,7 +85,7 @@ class IndirectRTXHalf : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/Lighting.h b/sources/RenderSystem/FrameGraph/autogen/pass/Lighting.h index eea6783bf..3ded61e4d 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/Lighting.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/Lighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/MainPipeline.pipeline.h b/sources/RenderSystem/FrameGraph/autogen/pass/MainPipeline.pipeline.h index 17575a37e..3a44fd48e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/MainPipeline.pipeline.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/MainPipeline.pipeline.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #include "PreScene.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/Mipmapping.h b/sources/RenderSystem/FrameGraph/autogen/pass/Mipmapping.h index d089db257..77c57d978 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/Mipmapping.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/Mipmapping.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_GBufferPack.h b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_GBufferPack.h index f736eaece..92e16742d 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_GBufferPack.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_GBufferPack.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -101,7 +101,7 @@ class NRD_GBufferPack : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_IndirectCombine.h b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_IndirectCombine.h index a67772f94..ae584570d 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_IndirectCombine.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_IndirectCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_REBLUR_Execute.h b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_REBLUR_Execute.h index 91d0f571b..d8b7182bc 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_REBLUR_Execute.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_REBLUR_Execute.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -75,7 +75,7 @@ class NRD_REBLUR_Execute : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_SIGMA_Execute.h b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_SIGMA_Execute.h index 50ad3396f..750f88c65 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_SIGMA_Execute.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_SIGMA_Execute.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -71,7 +71,7 @@ class NRD_SIGMA_Execute : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_ShadowCombine.h b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_ShadowCombine.h index c8556dc8b..48e357c70 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/NRD_ShadowCombine.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/NRD_ShadowCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/NormalRoughnessRepack.h b/sources/RenderSystem/FrameGraph/autogen/pass/NormalRoughnessRepack.h index 39b648f33..ac1288c23 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/NormalRoughnessRepack.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/NormalRoughnessRepack.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -60,7 +60,7 @@ class NormalRoughnessRepack : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Cascade.h b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Cascade.h index 5cc8289db..59bdc8665 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Cascade.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Cascade.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -62,7 +62,7 @@ class PSSM_Cascade : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Combine.h b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Combine.h index f74320b0a..c50e957e3 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Combine.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Combine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_GenerateMask.h b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_GenerateMask.h index ecc19d46e..099136b42 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_GenerateMask.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_GenerateMask.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -76,7 +76,7 @@ class PSSM_GenerateMask : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Global.h b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Global.h index c5aa8b60b..bc22aa123 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Global.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/PSSM_Global.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -33,7 +33,7 @@ class PSSM_Global : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/PreScene.h b/sources/RenderSystem/FrameGraph/autogen/pass/PreScene.h index 583bd7788..5bcaee572 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/PreScene.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/PreScene.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -31,7 +31,7 @@ class PreScene : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/Profiler.h b/sources/RenderSystem/FrameGraph/autogen/pass/Profiler.h index 9f24508ab..e1fe3417d 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/Profiler.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/Profiler.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/RTXColorPass.h b/sources/RenderSystem/FrameGraph/autogen/pass/RTXColorPass.h index ba1807b3d..b88397871 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/RTXColorPass.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/RTXColorPass.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -57,7 +57,7 @@ class RTXColorPass : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/RTXCombine.h b/sources/RenderSystem/FrameGraph/autogen/pass/RTXCombine.h index 7fad6970f..969c59e36 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/RTXCombine.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/RTXCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -81,7 +81,7 @@ class RTXCombine : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h b/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h index 8f4939bdf..c2ee9c940 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -80,7 +80,7 @@ class RTXShadow : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ReflCombine.h b/sources/RenderSystem/FrameGraph/autogen/pass/ReflCombine.h index 2dfaec5b7..203025fd6 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ReflCombine.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ReflCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTX.h b/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTX.h index 588c8a6e7..a3f096327 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTX.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTX.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -116,7 +116,7 @@ class ReflectionRTX : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h b/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h index 26e867f93..edc561dde 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -88,7 +88,7 @@ class ReflectionRTXHalf : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ResultCreation.h b/sources/RenderSystem/FrameGraph/autogen/pass/ResultCreation.h index 99361b2d6..2cbd83db5 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ResultCreation.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ResultCreation.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -31,7 +31,7 @@ class ResultCreation : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/SMAA.h b/sources/RenderSystem/FrameGraph/autogen/pass/SMAA.h index a94ff42a9..6e852361a 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/SMAA.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/SMAA.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -38,7 +38,7 @@ class SMAA : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/Scene.h b/sources/RenderSystem/FrameGraph/autogen/pass/Scene.h index c4cd97108..df92d09ef 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/Scene.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/Scene.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -98,7 +98,7 @@ class Scene : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ScreenReflection.h b/sources/RenderSystem/FrameGraph/autogen/pass/ScreenReflection.h index 57163e2db..0248d1088 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ScreenReflection.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ScreenReflection.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -77,7 +77,7 @@ class ScreenReflection : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ShadowRTX.h b/sources/RenderSystem/FrameGraph/autogen/pass/ShadowRTX.h index 482012b64..357bd2f59 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ShadowRTX.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ShadowRTX.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -72,7 +72,7 @@ class ShadowRTX : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/Sky.h b/sources/RenderSystem/FrameGraph/autogen/pass/Sky.h index cf814634a..12df0d90e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/Sky.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/Sky.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/UIPipeline.pipeline.h b/sources/RenderSystem/FrameGraph/autogen/pass/UIPipeline.pipeline.h index 659456950..83c7b1223 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/UIPipeline.pipeline.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/UIPipeline.pipeline.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #include "Profiler.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/UI_PreDraw.h b/sources/RenderSystem/FrameGraph/autogen/pass/UI_PreDraw.h index 324cbfe19..c0751f139 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/UI_PreDraw.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/UI_PreDraw.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -31,7 +31,7 @@ class UI_PreDraw : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/UI_Render.h b/sources/RenderSystem/FrameGraph/autogen/pass/UI_Render.h index 29c45bd07..e81a9c469 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/UI_Render.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/UI_Render.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSS.h b/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSS.h index c210049b0..ef05557a2 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSS.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSS.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -58,7 +58,7 @@ class UpscalingDLSS : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSSRR.h b/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSSRR.h index cf0d753ec..d51644116 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSSRR.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/UpscalingDLSSRR.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -78,7 +78,7 @@ class UpscalingDLSSRR : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h index 81a44cbdc..689232cbd 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -86,7 +86,7 @@ class VSM_BlockerClassify : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h index d97046643..ba9a93b91 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -101,7 +101,7 @@ class VSM_BlockerSearch : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_Combine.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_Combine.h index ad5a6e8e0..263e0d340 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_Combine.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_Combine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DebugClassifyOverlay.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DebugClassifyOverlay.h index f9278aadd..e4eeb837a 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DebugClassifyOverlay.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DebugClassifyOverlay.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DepthAnalysis.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DepthAnalysis.h index 56c21a9e7..e7ee5b6e0 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DepthAnalysis.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_DepthAnalysis.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -69,7 +69,7 @@ class VSM_DepthAnalysis : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h index e926f0816..ddac4c730 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -32,7 +32,7 @@ class VSM_GatherDispatch : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h index a4c5348ed..c8f76a367 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -57,7 +57,7 @@ class VSM_HiZRebuild : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h index 9e2eca4e8..0a166ce00 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -64,7 +64,7 @@ class VSM_RenderPages : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ScreenSpaceShadow.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ScreenSpaceShadow.h index 9fee91383..da455092f 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ScreenSpaceShadow.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ScreenSpaceShadow.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -73,7 +73,7 @@ class VSM_ScreenSpaceShadow : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ShadowResolve.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ShadowResolve.h index 643ebe9ea..f16c425da 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ShadowResolve.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_ShadowResolve.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -113,7 +113,7 @@ class VSM_ShadowResolve : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VoxelDebug.h b/sources/RenderSystem/FrameGraph/autogen/pass/VoxelDebug.h index d98e04ea4..0eae66d37 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VoxelDebug.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VoxelDebug.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -73,7 +73,7 @@ class VoxelDebug : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VoxelScreen.h b/sources/RenderSystem/FrameGraph/autogen/pass/VoxelScreen.h index 000f740cf..700b2a449 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VoxelScreen.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VoxelScreen.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -77,7 +77,7 @@ class VoxelScreen : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/Voxelize.h b/sources/RenderSystem/FrameGraph/autogen/pass/Voxelize.h index cd2b0ffa2..81ebbe36e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/Voxelize.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/Voxelize.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_after.h b/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_after.h index 6a87e54a6..3336976ae 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_after.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_after.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -53,7 +53,7 @@ class stencil_renderer_after : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_before.h b/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_before.h index aa7ab7240..33f6237e8 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_before.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/stencil_renderer_before.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "../PassNodeBase.h" @@ -37,7 +37,7 @@ class stencil_renderer_before : public PassNodeBase // the SAME field under the negated condition, using the same // [Always] flags, e.g. a [Multiple] pass where instance 0 creates a // shared resource and every other instance just needs it (see - // PSSM_Cascade, pssm.sig). Called by TypedPass::setup() after + // PSSM_Cascade, pssm.prism). Called by TypedPass::setup() after // setup_func returns true - not a substitute for setup_func's own // create()/recreate() calls for anything whose Desc depends on // runtime state. diff --git a/sources/RenderSystem/FrameGraph/autogen/pass_defaults.cpp b/sources/RenderSystem/FrameGraph/autogen/pass_defaults.cpp index 7e9ef1019..059d9e955 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass_defaults.cpp +++ b/sources/RenderSystem/FrameGraph/autogen/pass_defaults.cpp @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // Definitions for every pass whose setup() is fully described by // [RunAlways]/[SetupCondition]/[RenderCondition]. A [Static] pass gets @@ -16,11 +16,11 @@ // with very different import sets, so a body inlined there would need // whatever THAT pass's own condition references to be visible in EVERY one // of those files, not just the pass's own. This file imports HAL (where -// every Table:: context and SIG-declared enum lives) once, so any +// every Table:: context and Prism-declared enum lives) once, so any // [SetupCondition=`...`]/[RenderCondition=`...`] expression that only reads // a Table:: context via builder.graph->get_context() -- the // intended shape for these two options, see e.g. UpscalerSelectors -// (UpscalingDLSS.sig) or DeviceCapabilities (raytracing.sig) -- just works +// (UpscalingDLSS.prism) or DeviceCapabilities (raytracing.prism) -- just works // here, regardless of which pass's condition needs which context. A raw // Graphics-layer global instead of a Table:: context read would hit the // exact same "which TU imports what" problem this file exists to route diff --git a/sources/RenderSystem/FrameGraph/autogen/pass_defaults.h b/sources/RenderSystem/FrameGraph/autogen/pass_defaults.h index b247f72a0..0775b115b 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass_defaults.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass_defaults.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ // PassDefault provides the setup/render implementations for passes whose // logic is fully self-contained (no external wiring needed). Bodies are @@ -490,7 +490,7 @@ struct PassDefault // are plain members, and SkyRender/PSSM exist TWICE (triangle_drawer and // SceneRenderWorkflow) with different per-instance state, so there is no // single object a free render() could reach. Such a pass still declares its -// whole enable decision in the .sig; the generated setup lands here and the +// whole enable decision in the .prism; the generated setup lands here and the // owning pipeline wires it in, so the owner supplies only render_func. // // A free function or a Passes::T member would not work: Passes::T is attached diff --git a/sources/RenderSystem/FrameGraph/autogen/pass_ids.h b/sources/RenderSystem/FrameGraph/autogen/pass_ids.h index 2a67dc746..400579c6e 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass_ids.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass_ids.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/sources/RenderSystem/FrameGraph/autogen/passes.ixx b/sources/RenderSystem/FrameGraph/autogen/passes.ixx index b8c26ca51..6f29f7e5b 100644 --- a/sources/RenderSystem/FrameGraph/autogen/passes.ixx +++ b/sources/RenderSystem/FrameGraph/autogen/passes.ixx @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ export module FrameGraph:Passes; diff --git a/sources/RenderSystem/FrameGraph/autogen/resource_ids.h b/sources/RenderSystem/FrameGraph/autogen/resource_ids.h index 41477971a..46adbc626 100644 --- a/sources/RenderSystem/FrameGraph/autogen/resource_ids.h +++ b/sources/RenderSystem/FrameGraph/autogen/resource_ids.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/sources/RenderSystem/GUI/Base.cpp b/sources/RenderSystem/GUI/Base.cpp index a8009a5e7..f6a740dad 100644 --- a/sources/RenderSystem/GUI/Base.cpp +++ b/sources/RenderSystem/GUI/Base.cpp @@ -1023,7 +1023,7 @@ namespace GUI ui_ctx.draw_infos = std::move(draw_infos); ui_ctx.pre_draw_infos = std::move(pre_draw_infos); - // Mirrored into Table::UIState -- see its own comment (ui.sig) for + // Mirrored into Table::UIState -- see its own comment (ui.prism) for // why this can't just be a UIContext read: UI_PreDraw's // [RenderCondition] reads it from autogen/pass_defaults.cpp, which // only sees Table:: contexts. @@ -1031,7 +1031,7 @@ namespace GUI // Table, ambiguous by unqualified lookup inside module GUI. graph.get_context<::Table::UIState>().UI_Passes_needed = (uint32_t)ui_ctx.pre_draw_infos.size(); - // Mirrored into Table::UIRenderState -- see its own comment (ui.sig) + // Mirrored into Table::UIRenderState -- see its own comment (ui.prism) // for why: UI_Render's [Multiple=16] instances read passes_needed // via data.pass_index instead of the old ui_ctx.setup_counter++. { @@ -1079,7 +1079,7 @@ namespace GUI default: return FrameGraph::ResourceID::ResultTexture; } }; - // UI_Render declares ResultTexture statically (ui.sig); anything other + // UI_Render declares ResultTexture statically (ui.prism); anything other // than Final redirects that one field for this frame. Registered here, // during graph construction, because an override has to be in place // before setup() runs -- and re-registered every frame, since @@ -1740,7 +1740,7 @@ namespace GUI // PassDefault // ============================================================ -// setup() is fully generated (ui.sig's own [RenderCondition]). +// setup() is fully generated (ui.prism's own [RenderCondition]). // UI_PreDraw_Sync's ResourceChain must reset every frame (create() is the // only thing that calls reset_frame()) even with nothing to pre-draw, or // exists() keeps reporting true from a prior frame and UI_Render's need() @@ -1773,7 +1773,7 @@ static uint32_t ui_per_thread(uint32_t size) return std::max(clamped_per_thread, (size + 7) / 8); } -// setup() is fully generated (ui.sig's own [SetupCondition] on data.pass_index, +// setup() is fully generated (ui.prism's own [SetupCondition] on data.pass_index, // plus [NeedDynamic] for the debug-view source -- the one resource here whose // identity is picked at runtime). diff --git a/sources/RenderSystem/Helpers/BlueNoise.cpp b/sources/RenderSystem/Helpers/BlueNoise.cpp index e7fc9e894..90d7f2816 100644 --- a/sources/RenderSystem/Helpers/BlueNoise.cpp +++ b/sources/RenderSystem/Helpers/BlueNoise.cpp @@ -69,7 +69,7 @@ BlueNoise::BlueNoise() // ---- Pass function members ------------------------------------------------ - // setup() is fully generated (BlueNoise.sig's own [RunAlways]). + // setup() is fully generated (BlueNoise.prism's own [RunAlways]). m_bluenoise_render = [this](Passes::BlueNoise::Context& data, FrameGraph::FrameContext& context) { diff --git a/sources/RenderSystem/Helpers/BlueNoise.ixx b/sources/RenderSystem/Helpers/BlueNoise.ixx index ac28d91fd..bc4aaa060 100644 --- a/sources/RenderSystem/Helpers/BlueNoise.ixx +++ b/sources/RenderSystem/Helpers/BlueNoise.ixx @@ -13,7 +13,7 @@ export class BlueNoise HAL::StructuredBufferView ranking_buffer_view; HAL::StructuredBufferView scrambling_buffer_view; - // setup() is generated (BlueNoise.sig's own [RunAlways]) -- render only. + // setup() is generated (BlueNoise.prism's own [RunAlways]) -- render only. Passes::BlueNoise::render_func_type m_bluenoise_render; public: diff --git a/sources/RenderSystem/Lighting/PSSM.cpp b/sources/RenderSystem/Lighting/PSSM.cpp index 434b779ee..a877a8584 100644 --- a/sources/RenderSystem/Lighting/PSSM.cpp +++ b/sources/RenderSystem/Lighting/PSSM.cpp @@ -42,7 +42,7 @@ PSSM::PSSM() // ---- Global shadow map --------------------------------------------------- - // setup() is fully generated (pssm.sig's own [RunAlways]). + // setup() is fully generated (pssm.prism's own [RunAlways]). m_global_render = [this](Passes::PSSM_Global::Context& data, FrameGraph::FrameContext& context) { @@ -105,7 +105,7 @@ PSSM::PSSM() for (int i = 0; i < renders_size; i++) { - // setup() is fully generated (pssm.sig's own [RunAlways]): PSSM_Depths/ + // setup() is fully generated (pssm.prism's own [RunAlways]): PSSM_Depths/ // PSSM_Cameras are auto-created/needed from their own [Always]+[Size]+ // [Format]+[Optional], keyed off data.pass_index. @@ -188,7 +188,7 @@ PSSM::PSSM() // ---- Generate light mask ------------------------------------------------- - // setup() is fully generated (pssm.sig's own [RunAlways]). + // setup() is fully generated (pssm.prism's own [RunAlways]). m_mask_render = [this](Passes::PSSM_GenerateMask::Context& data, FrameGraph::FrameContext& context) { @@ -240,7 +240,7 @@ PSSM::PSSM() // ---- Combine lighting ---------------------------------------------------- - // setup() is fully generated (pssm.sig's own [RunAlways]). + // setup() is fully generated (pssm.prism's own [RunAlways]). m_combine_render = [this](Passes::PSSM_Combine::Context& data, FrameGraph::FrameContext& context) { diff --git a/sources/RenderSystem/Lighting/PSSM.ixx b/sources/RenderSystem/Lighting/PSSM.ixx index 92ee8ffec..bc3ebe4a8 100644 --- a/sources/RenderSystem/Lighting/PSSM.ixx +++ b/sources/RenderSystem/Lighting/PSSM.ixx @@ -20,7 +20,7 @@ export class PSSM // read anyway. float cascade_scaler(const camera* cam) const; - // Mirrors pssm.sig's own PSSM_RendersSize (PSSM_Cascade's ArrayCount/ + // Mirrors pssm.prism's own PSSM_RendersSize (PSSM_Cascade's ArrayCount/ // buffer-size there) -- the many loop bounds/scaler math below need a // plain int, not a SIG field, but this keeps both sides reading the // same single source of truth instead of two independently hand-kept @@ -31,7 +31,7 @@ export class PSSM float3 position; size_t counter = 0; - // Every PSSM pass is [RunAlways] (pssm.sig), so all four setups are + // Every PSSM pass is [RunAlways] (pssm.prism), so all four setups are // generated and only the render halves live here. Passes::PSSM_Global::render_func_type m_global_render; std::array m_cascade_render; diff --git a/sources/RenderSystem/Materials/PreviewSession.cpp b/sources/RenderSystem/Materials/PreviewSession.cpp index 84ae43248..23476011d 100644 --- a/sources/RenderSystem/Materials/PreviewSession.cpp +++ b/sources/RenderSystem/Materials/PreviewSession.cpp @@ -21,7 +21,7 @@ void materials::MaterialPreviewSession::rebuild_pso() // Same reasoning as the old PipelinePasses ctor: drive init_pso() + // override + create() manually rather than the PSOS type's normal // (device, modifier) ctor, since the generated init_pso() re-clobbers - // the overridden stage's file_name/entry_point to the .sig's static + // the overridden stage's file_name/entry_point to the .prism's static // default right after any modifier callback runs. if (want_3d) { @@ -173,7 +173,7 @@ void materials::MaterialPreviewSession::dispatch() // Real depth test/write -- overlapping front/back geometry on the // mesh has nothing else to resolve visibility per pixel (no rtv, - // UAV-only PS -- see material_preview.sig). + // UAV-only PS -- see material_preview.prism). { RT::DepthOnly rt; rt.GetDepth() = preview_depth->texture_2d().depthStencil; diff --git a/sources/RenderSystem/Materials/Values.cpp b/sources/RenderSystem/Materials/Values.cpp index 0966b7e44..e4ddfdbaa 100644 --- a/sources/RenderSystem/Materials/Values.cpp +++ b/sources/RenderSystem/Materials/Values.cpp @@ -106,7 +106,7 @@ shader_parameter MaterialContext::create_value(Uniform::ptr f) uniform_struct += ")";*/ // The preview build binds MaterialPreviewInfo (its own SIG table, see - // material_preview.sig), not the production MaterialInfo -- same CB + // material_preview.prism), not the production MaterialInfo -- same CB // layout/shader_name, different accessor. auto accessor = capture_preview ? "GetMaterialPreviewInfo()" : "GetMaterialInfo()"; auto result = graph->add_value(f->type, std::string(accessor) + ".GetData()." + shader_name); @@ -335,7 +335,7 @@ int MaterialContext::get_preview_slot_count() namespace { - // Preview slices are always float4 (see material_preview.sig); node values + // Preview slices are always float4 (see material_preview.prism); node values // can be narrower (scalars, float2/3), so pad/broadcast into one. Alpha is // always forced to 1 (even for genuine float4 values) -- the GUI draws // this alpha-blended, and a node's own .w (opacity/pack/whatever) isn't diff --git a/sources/RenderSystem/Materials/Values.ixx b/sources/RenderSystem/Materials/Values.ixx index 085196073..555897ade 100644 --- a/sources/RenderSystem/Materials/Values.ixx +++ b/sources/RenderSystem/Materials/Values.ixx @@ -285,7 +285,7 @@ class MaterialContext : public FlowGraph::GraphContext std::string text; - // Per-node preview capture (see material_preview.sig / Materials.cpp). + // Per-node preview capture (see material_preview.prism / Materials.cpp). // Only populated while generating preview_shader. // // Node outputs are transient here -- put() triggers send_next() diff --git a/sources/RenderSystem/Materials/universal_material.ixx b/sources/RenderSystem/Materials/universal_material.ixx index 2d77ba645..357d14ca1 100644 --- a/sources/RenderSystem/Materials/universal_material.ixx +++ b/sources/RenderSystem/Materials/universal_material.ixx @@ -226,7 +226,7 @@ export namespace materials void on_graph_changed(); void generate_material(); - // Per-node preview capture (editor-only; see material_preview.sig). + // Per-node preview capture (editor-only; see material_preview.prism). // Just the raw ingredients -- building/compiling/dispatching the // actual preview PSO and results texture is materials:: // MaterialPreviewSession's job (owned by the graph editor's canvas diff --git a/sources/RenderSystem/Renderer/StencilRenderer.cpp b/sources/RenderSystem/Renderer/StencilRenderer.cpp index 5cca1dcb3..6801f2761 100644 --- a/sources/RenderSystem/Renderer/StencilRenderer.cpp +++ b/sources/RenderSystem/Renderer/StencilRenderer.cpp @@ -455,7 +455,7 @@ stencil_renderer::stencil_renderer() : VariableContext(L"stencil") // ---- Pass function members ----------------------------------------------- - // setup() is fully generated (stenciler.sig's own [RunAlways]); the camera/ + // setup() is fully generated (stenciler.prism's own [RunAlways]); the camera/ // gizmo work it used to do runs in update_frame(). m_before_render = [this](Passes::stencil_renderer_before::Context& data, FrameGraph::FrameContext& context) @@ -598,7 +598,7 @@ stencil_renderer::stencil_renderer() : VariableContext(L"stencil") }); }; - // setup() is fully generated (stenciler.sig's own [SetupCondition]). + // setup() is fully generated (stenciler.prism's own [SetupCondition]). m_after_render = [this](Passes::stencil_renderer_after::Context& data, FrameGraph::FrameContext& context) { @@ -790,7 +790,7 @@ void stencil_renderer::update_frame(FrameGraph::Graph& graph) axis_intersect_cam.update(); // Mirror for stencil_renderer_after's generated [SetupCondition] - // (stenciler.sig). + // (stenciler.prism). // ::Table -- GUI::Elements::Table (Table.ixx) is also visible here, so the // unqualified name is ambiguous. graph.get_context<::Table::StencilState>().has_selection = !selected.empty(); diff --git a/sources/RenderSystem/Renderer/StencilRenderer.ixx b/sources/RenderSystem/Renderer/StencilRenderer.ixx index abef7dc7c..558f904fa 100644 --- a/sources/RenderSystem/Renderer/StencilRenderer.ixx +++ b/sources/RenderSystem/Renderer/StencilRenderer.ixx @@ -81,7 +81,7 @@ export class stencil_renderer : public GUI::base, public Events::Runner, public std::vector> selected; vec3 direction; - // Both setups are generated (stenciler.sig) -- render halves only. + // Both setups are generated (stenciler.prism) -- render halves only. Passes::stencil_renderer_before::render_func_type m_before_render; Passes::stencil_renderer_after::render_func_type m_after_render; diff --git a/sources/RenderSystem/Scene/PreSceneSystem.cpp b/sources/RenderSystem/Scene/PreSceneSystem.cpp index c9feae89e..2107850f4 100644 --- a/sources/RenderSystem/Scene/PreSceneSystem.cpp +++ b/sources/RenderSystem/Scene/PreSceneSystem.cpp @@ -10,7 +10,7 @@ import FrameGraph; using namespace FrameGraph; -// setup() is fully generated (scene.sig's own [RunAlways]). +// setup() is fully generated (scene.prism's own [RunAlways]). void PassDefault::pre_setup(FrameGraph::Graph& graph) { diff --git a/sources/RenderSystem/Scene/SceneSystem.cpp b/sources/RenderSystem/Scene/SceneSystem.cpp index 51af8acf2..8c8caed4c 100644 --- a/sources/RenderSystem/Scene/SceneSystem.cpp +++ b/sources/RenderSystem/Scene/SceneSystem.cpp @@ -9,9 +9,9 @@ import HAL; using namespace FrameGraph; -// setup() is fully generated (scene.sig's own [RunAlways]) -- every +// setup() is fully generated (scene.prism's own [RunAlways]) -- every // GBuffer_* field (including the two *Prev-linked ones) is auto-created, -// see scene.sig's own comment. +// see scene.prism's own comment. void PassDefault::render( Passes::Scene::Context& data, FrameGraph::FrameContext& context) diff --git a/sources/RenderSystem/Shadows/VSM/VSM.cpp b/sources/RenderSystem/Shadows/VSM/VSM.cpp index 2511ce2c2..9a08e0f71 100644 --- a/sources/RenderSystem/Shadows/VSM/VSM.cpp +++ b/sources/RenderSystem/Shadows/VSM/VSM.cpp @@ -14,7 +14,7 @@ import Graphics; // RTXShadow already includes unmodified, same "#include after the imports it // needs, no global module fragment" shape). VSM_ScreenSpaceShadow's own GPU // shader is a deliberately separate copy, not shared -- see its own comment -// in vsm.sig. +// in vsm.prism. #include "../../FrameGraph/bend_sss_cpu.h" using namespace FrameGraph; @@ -246,7 +246,7 @@ void VSM::plan_frame(FrameGraph::Graph& graph) // this must keep updating every frame regardless of debug mode or // whether VSM_Combine itself runs this frame -- VSM_Combine no longer // runs at all when use_vsm_penumbra is on (see its own PassNode comment - // in vsm.sig), which used to be the only place this was set. + // in vsm.prism), which used to be the only place this was set. RTX::get().debug_full_reference_shadow = (vsm_debug_view == VSMDebugView::RtxReference); // Single-threaded, once per frame, strictly before any level's render() @@ -604,9 +604,9 @@ VSM::VSM() : VariableContext(L"VSM") // covering every active+dirty level's every mesh, instead of one // Multiple-slot pass per level) ------------------------------------------ - // setup() is fully generated (vsm.sig's own [RunAlways]). + // setup() is fully generated (vsm.prism's own [RunAlways]). - // setup() is fully generated (vsm.sig's own [RunAlways]). + // setup() is fully generated (vsm.prism's own [RunAlways]). // Phase 5.17: the async-compute Hi-Z rebuild pass. need()s VSM_Atlas // (read, establishes "runs after VSM_RenderPages' draw") and @@ -614,7 +614,7 @@ VSM::VSM() : VariableContext(L"VSM") // still owns create() for the cold-start clear, see its own setup()). // VSM_DirtySlots moves here entirely since only this pass's dispatches // consume it now. - // setup() is fully generated (vsm.sig's own [RunAlways]). + // setup() is fully generated (vsm.prism's own [RunAlways]). m_gatherdispatch_render = [this, pages_side, pages_per_level](Passes::VSM_GatherDispatch::Context& data, FrameGraph::FrameContext& context) { @@ -1072,7 +1072,7 @@ VSM::VSM() : VariableContext(L"VSM") } }; - // ---- Hi-Z pyramid rebuild (Phase 5.17: async compute, see vsm.sig's + // ---- Hi-Z pyramid rebuild (Phase 5.17: async compute, see vsm.prism's // VSM_HiZRebuild comment) ----------------------------------------------- m_hizrebuild_render = [this, pages_per_level, pyramid_mip_count](Passes::VSM_HiZRebuild::Context& data, FrameGraph::FrameContext& context) @@ -1125,7 +1125,7 @@ VSM::VSM() : VariableContext(L"VSM") // No manual transitions here any more. VSM_Atlas (DSV -> SRV for // the copy shader) and VSM_PageHiZ's per-mip UAV/SRV binds are - // declared [Barrier = ALL] in vsm.sig, so each bind records one + // declared [Barrier = ALL] in vsm.prism, so each bind records one // whole-resource use instead of expanding into its // physical_page_count-slice range -- which is exactly what the // bare add_resource_usage() calls that used to sit here were @@ -1168,7 +1168,7 @@ VSM::VSM() : VariableContext(L"VSM") // pyramid_mip_count-1 times per frame, not once. // src is a UAV, not an SRV, even though it's only ever // read -- see VSMDownsampleHiZBatch's own comment in - // vsm.sig for why. src_mip is no longer needed for + // vsm.prism for why. src_mip is no longer needed for // addressing (the view itself is already narrowed to // that mip) but is kept for parity with the entry's own // bookkeeping. @@ -1187,7 +1187,7 @@ VSM::VSM() : VariableContext(L"VSM") // ---- Blocker classification/search/resolve, Phase 5.18 Part A follow-up // ---- (take 4): three stages, single writer per shared resource -- see - // ---- vsm.sig's own PassNode comments for the full rationale (root-cause + // ---- vsm.prism's own PassNode comments for the full rationale (root-cause // ---- finding from VoxelGIGraph's own VoxelCombine precedent, after two // ---- separate completely-black-screen bugs from splitting a shared // ---- output resource's writes across independent PassNodes). ----------- @@ -1197,7 +1197,7 @@ VSM::VSM() : VariableContext(L"VSM") // both in this one render() (an AppendStructuredBuffer's hidden GPU // counter isn't reliably barrier-tracked across a PassNode boundary, // confirmed live earlier this session). - // setup() is fully generated (vsm.sig's own [SetupCondition]); the + // setup() is fully generated (vsm.prism's own [SetupCondition]); the // one-time dispatch-argument buffers it used to lazily allocate are created // in init_penumbra_dispatch_buffers() instead -- allocating and // execute_and_wait()ing during graph setup was never the right place. @@ -1294,7 +1294,7 @@ VSM::VSM() : VariableContext(L"VSM") // blocker-search result (world_delta/tc/slot, same packed uint4 shape as // before) into its OWN dedicated texture, never a texture VSM_Combine // samples directly. - // setup() is fully generated (vsm.sig's own [SetupCondition]). + // setup() is fully generated (vsm.prism's own [SetupCondition]). m_blockersearch_render = [this](Passes::VSM_BlockerSearch::Context& data, FrameGraph::FrameContext& context) { @@ -1397,7 +1397,7 @@ VSM::VSM() : VariableContext(L"VSM") }; // Screen-space contact-shadow patch, between stage 2 and stage 3 -- see - // vsm.sig's own VSMScreenSpaceShadowParams comment for the design (a + // vsm.prism's own VSMScreenSpaceShadowParams comment for the design (a // deliberately separate copy of Bend's algorithm, gated by // VSM_AmbiguousMask instead of a tile-indirect dispatch). CPU-side // dispatch planning mirrors PassDefaults.cpp's own RTXShadow render() @@ -1405,7 +1405,7 @@ VSM::VSM() : VariableContext(L"VSM") // emulation -- this is a handful of plain Dispatch() calls of one PSO, // no classify/compact stage needed since VSM_BlockerSearch already did // the classifying. - // setup() is fully generated (vsm.sig's own [SetupCondition]). + // setup() is fully generated (vsm.prism's own [SetupCondition]). m_screenspaceshadow_render = [this](Passes::VSM_ScreenSpaceShadow::Context& data, FrameGraph::FrameContext& context) { @@ -1452,10 +1452,10 @@ VSM::VSM() : VariableContext(L"VSM") }; // Stage 3: three PSOs (full-lit/full-shadow/shadow-blur), ONE PassNode, - // ONE render() -- see vsm.sig's VSM_ShadowResolve PassNode comment for + // ONE render() -- see vsm.prism's VSM_ShadowResolve PassNode comment for // why this shape specifically (mirrors VoxelGIGraph's VoxelCombine // issuing its own blur+blur2 exec_indirects together). - // setup() is fully generated (vsm.sig's own [SetupCondition]); the + // setup() is fully generated (vsm.prism's own [SetupCondition]); the // VSMSelectors mirror it used to also do now runs once in update_frame(). m_shadowresolve_render = [this](Passes::VSM_ShadowResolve::Context& data, FrameGraph::FrameContext& context) @@ -1567,7 +1567,7 @@ VSM::VSM() : VariableContext(L"VSM") // dispatch (same PSO as above, just a different list stage 2 built // after running the real search) for search_tiles that turned out // to need no work after all. See VSMSearchVerdictAppend's own - // comment in vsm.sig. + // comment in vsm.prism. { Slots::VSMTileListRead tiles; tiles.GetTiles() = data.VSM_ConfirmedLitTiles->structuredBuffer; @@ -1590,7 +1590,7 @@ VSM::VSM() : VariableContext(L"VSM") // ---- Combine lighting ------------------------------------------------ - // setup() is fully generated (vsm.sig's own [SetupCondition]). + // setup() is fully generated (vsm.prism's own [SetupCondition]). m_combine_render = [this](Passes::VSM_Combine::Context& data, FrameGraph::FrameContext& context) { @@ -1657,12 +1657,12 @@ VSM::VSM() : VariableContext(L"VSM") compute.dispatch(context.graph->get_context().frame_size, ivec2{ 16, 16 }); }; - // ---- Debug tile-classification overlay (see vsm.sig's own PassNode + // ---- Debug tile-classification overlay (see vsm.prism's own PassNode // ---- comment) -- reads stage 1's real tile lists and paints over the // ---- already-shaded ResultTexture; only ever dispatched when the // ---- debug toggle is on. - // setup() is fully generated (vsm.sig's own [SetupCondition]). + // setup() is fully generated (vsm.prism's own [SetupCondition]). m_debugoverlay_render = [this](Passes::VSM_DebugClassifyOverlay::Context& data, FrameGraph::FrameContext& context) { @@ -1671,7 +1671,7 @@ VSM::VSM() : VariableContext(L"VSM") compute.set_signature(Layouts::DefaultLayout); // Moved here from VSM_Combine's own combine_result -- see this - // PassNode's own comment in vsm.sig. Full-screen, not tile-driven + // PassNode's own comment in vsm.prism. Full-screen, not tile-driven // (these two don't care which classify bucket a pixel landed in). // RtxReference only actually fires when ShadowMask exists this frame // (same builder.exists()-guarded case VSM_Combine used to handle) -- @@ -1782,7 +1782,7 @@ VSM::VSM() : VariableContext(L"VSM") // ---- Depth analysis (feeds active_min's hysteresis, see update_active_window()) -- - // setup() is fully generated (vsm.sig's own [RunAlways]). + // setup() is fully generated (vsm.prism's own [RunAlways]). m_depth_analysis_render = [this](Passes::VSM_DepthAnalysis::Context& data, FrameGraph::FrameContext& context) { diff --git a/sources/RenderSystem/Shadows/VSM/VSM.ixx b/sources/RenderSystem/Shadows/VSM/VSM.ixx index 8f7848a20..a9db23fd3 100644 --- a/sources/RenderSystem/Shadows/VSM/VSM.ixx +++ b/sources/RenderSystem/Shadows/VSM/VSM.ixx @@ -98,7 +98,7 @@ public: Variable use_vsm_hiz_blocker_classify = { true, "Hi-Z blocker classify", this }; // Runtime A/B switch between VSMDepthDraw and VSMDepthDrawConservative - // (vsm.sig) -- conservative rasterization is a PSO-creation-time + // (vsm.prism) -- conservative rasterization is a PSO-creation-time // rasterizer-state field, not settable per-draw, so the toggle picks // between two compiled PSOs at bind time (m_renderpages_render) rather // than a shader #define permutation. Aimed at thin/sparse geometry @@ -119,24 +119,24 @@ public: Variable use_vsm_debug_clear_unwritten = { false, "Debug: clear unwritten buffers", this }; // Master switch for VSM_ScreenSpaceShadow (see its own comment in - // vsm.sig). Off: the pass doesn't run at all (its own setup() returns + // vsm.prism). Off: the pass doesn't run at all (its own setup() returns // false, matching use_vsm_penumbra's own gate) -- no dispatch, no // VSM_ContactShadow resource created, no descriptor bound in // CS_SHADOW_BLUR. On by default now that it's validated. Variable use_vsm_contact_shadow = { true, "Contact shadows", this }; // VSMScreenSpaceShadowParams::surface_thickness -- Bend's own - // SurfaceThickness (see SS_Shadow.sig's own field comment): assumed + // SurfaceThickness (see SS_Shadow.prism's own field comment): assumed // thickness of each pixel for shadow-casting, as a fraction of the // sample-to-far-clip depth range. Controls how wide/far a contact // shadow reads -- scene-depth-scale-sensitive enough to want live - // tuning rather than a rebuild. Same starting value as SS_Shadow.sig's + // tuning rather than a rebuild. Same starting value as SS_Shadow.prism's // own documented default. Variable vsm_contact_shadow_thickness = { 0.005f, "Contact shadow thickness", this, 0.001f, 0.01f }; // Single-select debug view (VSMDebugView, a SIG enum shared verbatim // with the shader side -- see VSMConstants.debug_view's own comment in - // vsm.sig). Replaces three separate bools that were always meant to be + // vsm.prism). Replaces three separate bools that were always meant to be // mutually exclusive: // None -- normal shading, no debug view. // PageGrid -- colors every pixel by clipmap level (one flat hue @@ -183,8 +183,8 @@ public: // are coarser (see VSMClipmap::page_world_size). Keep MaxLevels in step // with VSMConstants::level_info[26] (Phase 5.8: no longer also a // [Multiple=N] PassNode budget -- VSM_RenderPages is a single pass now). - // .sig-declared (vsm.sig's const_definition) so VSM_DispatchCommands' - // own [Size=...] in the same .sig, and VSMInvalidationTracker.ixx's own + // .prism-declared (vsm.prism's const_definition) so VSM_DispatchCommands' + // own [Size=...] in the same .prism, and VSMInvalidationTracker.ixx's own // copy, can't drift from this one. static constexpr int MaxLevels = Constants::MaxLevels; static constexpr int LevelZeroSlot = 12; @@ -476,7 +476,7 @@ private: // Builds page_hiz_mip_array_views from VSM_HiZRebuild's OWN Context // (that PassNode need()s VSM_PageHiZ too, alongside VSM_RenderPages, // which still create()s it for the once-ever cold-start clear -- see - // vsm.sig's VSM_HiZRebuild comment). + // vsm.prism's VSM_HiZRebuild comment). void build_page_hiz_views(Passes::VSM_HiZRebuild::Context& data, int pyramid_mip_count); Passes::VSM_GatherDispatch::render_func_type m_gatherdispatch_render; @@ -487,14 +487,14 @@ private: // rebuild (copy + downsample dispatches) runs on the async compute // queue instead of serializing into VSM_RenderPages' own direct-queue // pass -- nothing else this frame reads VSM_PageHiZ, only next frame's - // draw does. See vsm.sig's VSM_HiZRebuild PassNode comment. + // draw does. See vsm.prism's VSM_HiZRebuild PassNode comment. Passes::VSM_HiZRebuild::render_func_type m_hizrebuild_render; // Phase 5.18 Part A follow-up (take 4): groupshared tile classification, - // three stages -- see vsm.sig's own PassNode comments (VSM_BlockerClassify, + // three stages -- see vsm.prism's own PassNode comments (VSM_BlockerClassify, // VSM_BlockerSearch, VSM_ShadowResolve) for the full design and the // root-cause finding (VoxelGIGraph's VoxelCombine precedent) that shaped - // it. Registered in order ahead of VSM_Combine in test.sig's pipeline + // it. Registered in order ahead of VSM_Combine in test.prism's pipeline // listing. Passes::VSM_BlockerClassify::render_func_type m_blockerclassify_render; @@ -508,7 +508,7 @@ private: // Debug tile-classification overlay -- reads stage 1's real // VSM_LitTiles/VSM_DarkTiles lists and paints over the already-shaded - // ResultTexture, only when vsm_debug_view is HizClassify. See vsm.sig's + // ResultTexture, only when vsm_debug_view is HizClassify. See vsm.prism's // own PassNode comment for why this replaced the earlier postfactum // "final shadow value happens to equal 1.0/0.0" guess. Passes::VSM_DebugClassifyOverlay::render_func_type m_debugoverlay_render; @@ -547,7 +547,7 @@ public: // depth-compare sample (VSMShadowLookup/get_shadow_vsm_simple), not the // full penumbra/PCSS pipeline -- e.g. VoxelGI's Lighting pass, which // runs before VSM_BlockerClassify/Search/ShadowResolve in the frame (see - // test.sig's MainPipeline ordering). Fills only the scalar level-lookup + // test.prism's MainPipeline ordering). Fills only the scalar level-lookup // fields (active_min/max/page_size/pages_per_level/light_view/ // level_info) -- every VSM render() function rebuilds this same block // inline today (see VSM.cpp), this is that block factored out for reuse. @@ -559,7 +559,7 @@ public: VSM(); // Once per frame, before graph.setup(): mirrors the Variable toggles - // below into Table::VSMSelectors (vsm.sig), which every VSM pass's + // below into Table::VSMSelectors (vsm.prism), which every VSM pass's // generated setup reads. Needs a VSM instance, which a generated static // setup has no way to reach. void update_frame(FrameGraph::Graph& graph); @@ -568,7 +568,7 @@ public: // Called from the constructor; idempotent. void init_penumbra_dispatch_buffers(); - // Every VSM pass states its enable condition in vsm.sig and gets a + // Every VSM pass states its enable condition in vsm.prism and gets a // generated setup (PassSetupDefault), so only render funcs are wired. template explicit VSM(TPipeline& pipeline) : VSM() diff --git a/sources/RenderSystem/Shadows/VSM/VSMInvalidationTracker.ixx b/sources/RenderSystem/Shadows/VSM/VSMInvalidationTracker.ixx index abab7cab4..6e4999352 100644 --- a/sources/RenderSystem/Shadows/VSM/VSMInvalidationTracker.ixx +++ b/sources/RenderSystem/Shadows/VSM/VSMInvalidationTracker.ixx @@ -22,7 +22,7 @@ export // Must cover VSM::MaxLevels (one unified ladder -- any storage slot // can become active depending on the current [active_min, active_max] // window, not just a fixed "regular" range). Shared with VSM.ixx's - // own MaxLevels via vsm.sig's const_definition, so the two can't drift. + // own MaxLevels via vsm.prism's const_definition, so the two can't drift. static constexpr int MaxLevels = Constants::MaxLevels; std::array dirty_masks{}; diff --git a/sources/SIGParser/.antlr/SIGBaseListener.cpp b/sources/SIGParser/.antlr/SIGBaseListener.cpp deleted file mode 100644 index ea6792b36..000000000 --- a/sources/SIGParser/.antlr/SIGBaseListener.cpp +++ /dev/null @@ -1,7 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - - -#include "SIGBaseListener.h" - - diff --git a/sources/SIGParser/.antlr/SIGBaseListener.h b/sources/SIGParser/.antlr/SIGBaseListener.h deleted file mode 100644 index e0c3f5edd..000000000 --- a/sources/SIGParser/.antlr/SIGBaseListener.h +++ /dev/null @@ -1,308 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - -#pragma once - - -#include "antlr4-runtime.h" -#include "SIGListener.h" - - -/** - * This class provides an empty implementation of SIGListener, - * which can be extended to create a listener which only needs to handle a subset - * of the available methods. - */ -class SIGBaseListener : public SIGListener { -public: - - virtual void enterParse(SIGParser::ParseContext * /*ctx*/) override { } - virtual void exitParse(SIGParser::ParseContext * /*ctx*/) override { } - - virtual void enterConst_definition(SIGParser::Const_definitionContext * /*ctx*/) override { } - virtual void exitConst_definition(SIGParser::Const_definitionContext * /*ctx*/) override { } - - virtual void enterBind_option(SIGParser::Bind_optionContext * /*ctx*/) override { } - virtual void exitBind_option(SIGParser::Bind_optionContext * /*ctx*/) override { } - - virtual void enterCond_expr(SIGParser::Cond_exprContext * /*ctx*/) override { } - virtual void exitCond_expr(SIGParser::Cond_exprContext * /*ctx*/) override { } - - virtual void enterCond_term(SIGParser::Cond_termContext * /*ctx*/) override { } - virtual void exitCond_term(SIGParser::Cond_termContext * /*ctx*/) override { } - - virtual void enterQualified_ref(SIGParser::Qualified_refContext * /*ctx*/) override { } - virtual void exitQualified_ref(SIGParser::Qualified_refContext * /*ctx*/) override { } - - virtual void enterMember_ref(SIGParser::Member_refContext * /*ctx*/) override { } - virtual void exitMember_ref(SIGParser::Member_refContext * /*ctx*/) override { } - - virtual void enterCond_op(SIGParser::Cond_opContext * /*ctx*/) override { } - virtual void exitCond_op(SIGParser::Cond_opContext * /*ctx*/) override { } - - virtual void enterFlag_value_holder(SIGParser::Flag_value_holderContext * /*ctx*/) override { } - virtual void exitFlag_value_holder(SIGParser::Flag_value_holderContext * /*ctx*/) override { } - - virtual void enterRaw_value(SIGParser::Raw_valueContext * /*ctx*/) override { } - virtual void exitRaw_value(SIGParser::Raw_valueContext * /*ctx*/) override { } - - virtual void enterOptions_assign(SIGParser::Options_assignContext * /*ctx*/) override { } - virtual void exitOptions_assign(SIGParser::Options_assignContext * /*ctx*/) override { } - - virtual void enterOption(SIGParser::OptionContext * /*ctx*/) override { } - virtual void exitOption(SIGParser::OptionContext * /*ctx*/) override { } - - virtual void enterOption_block(SIGParser::Option_blockContext * /*ctx*/) override { } - virtual void exitOption_block(SIGParser::Option_blockContext * /*ctx*/) override { } - - virtual void enterArray_count_id(SIGParser::Array_count_idContext * /*ctx*/) override { } - virtual void exitArray_count_id(SIGParser::Array_count_idContext * /*ctx*/) override { } - - virtual void enterArray(SIGParser::ArrayContext * /*ctx*/) override { } - virtual void exitArray(SIGParser::ArrayContext * /*ctx*/) override { } - - virtual void enterValue_declaration(SIGParser::Value_declarationContext * /*ctx*/) override { } - virtual void exitValue_declaration(SIGParser::Value_declarationContext * /*ctx*/) override { } - - virtual void enterSlot_declaration(SIGParser::Slot_declarationContext * /*ctx*/) override { } - virtual void exitSlot_declaration(SIGParser::Slot_declarationContext * /*ctx*/) override { } - - virtual void enterSampler_declaration(SIGParser::Sampler_declarationContext * /*ctx*/) override { } - virtual void exitSampler_declaration(SIGParser::Sampler_declarationContext * /*ctx*/) override { } - - virtual void enterDefine_declaration(SIGParser::Define_declarationContext * /*ctx*/) override { } - virtual void exitDefine_declaration(SIGParser::Define_declarationContext * /*ctx*/) override { } - - virtual void enterRtv_formats_declaration(SIGParser::Rtv_formats_declarationContext * /*ctx*/) override { } - virtual void exitRtv_formats_declaration(SIGParser::Rtv_formats_declarationContext * /*ctx*/) override { } - - virtual void enterBlends_declaration(SIGParser::Blends_declarationContext * /*ctx*/) override { } - virtual void exitBlends_declaration(SIGParser::Blends_declarationContext * /*ctx*/) override { } - - virtual void enterPointer(SIGParser::PointerContext * /*ctx*/) override { } - virtual void exitPointer(SIGParser::PointerContext * /*ctx*/) override { } - - virtual void enterPso_param(SIGParser::Pso_paramContext * /*ctx*/) override { } - virtual void exitPso_param(SIGParser::Pso_paramContext * /*ctx*/) override { } - - virtual void enterClass_no_template(SIGParser::Class_no_templateContext * /*ctx*/) override { } - virtual void exitClass_no_template(SIGParser::Class_no_templateContext * /*ctx*/) override { } - - virtual void enterType_with_template(SIGParser::Type_with_templateContext * /*ctx*/) override { } - virtual void exitType_with_template(SIGParser::Type_with_templateContext * /*ctx*/) override { } - - virtual void enterInherit_id(SIGParser::Inherit_idContext * /*ctx*/) override { } - virtual void exitInherit_id(SIGParser::Inherit_idContext * /*ctx*/) override { } - - virtual void enterName_id(SIGParser::Name_idContext * /*ctx*/) override { } - virtual void exitName_id(SIGParser::Name_idContext * /*ctx*/) override { } - - virtual void enterOption_id(SIGParser::Option_idContext * /*ctx*/) override { } - virtual void exitOption_id(SIGParser::Option_idContext * /*ctx*/) override { } - - virtual void enterOwner_id(SIGParser::Owner_idContext * /*ctx*/) override { } - virtual void exitOwner_id(SIGParser::Owner_idContext * /*ctx*/) override { } - - virtual void enterTemplate_id(SIGParser::Template_idContext * /*ctx*/) override { } - virtual void exitTemplate_id(SIGParser::Template_idContext * /*ctx*/) override { } - - virtual void enterFunction_id(SIGParser::Function_idContext * /*ctx*/) override { } - virtual void exitFunction_id(SIGParser::Function_idContext * /*ctx*/) override { } - - virtual void enterValue_id(SIGParser::Value_idContext * /*ctx*/) override { } - virtual void exitValue_id(SIGParser::Value_idContext * /*ctx*/) override { } - - virtual void enterValue_id_ignore(SIGParser::Value_id_ignoreContext * /*ctx*/) override { } - virtual void exitValue_id_ignore(SIGParser::Value_id_ignoreContext * /*ctx*/) override { } - - virtual void enterType_id(SIGParser::Type_idContext * /*ctx*/) override { } - virtual void exitType_id(SIGParser::Type_idContext * /*ctx*/) override { } - - virtual void enterInsert_block(SIGParser::Insert_blockContext * /*ctx*/) override { } - virtual void exitInsert_block(SIGParser::Insert_blockContext * /*ctx*/) override { } - - virtual void enterShader_path(SIGParser::Shader_pathContext * /*ctx*/) override { } - virtual void exitShader_path(SIGParser::Shader_pathContext * /*ctx*/) override { } - - virtual void enterInherit(SIGParser::InheritContext * /*ctx*/) override { } - virtual void exitInherit(SIGParser::InheritContext * /*ctx*/) override { } - - virtual void enterLayout_stat(SIGParser::Layout_statContext * /*ctx*/) override { } - virtual void exitLayout_stat(SIGParser::Layout_statContext * /*ctx*/) override { } - - virtual void enterLayout_block(SIGParser::Layout_blockContext * /*ctx*/) override { } - virtual void exitLayout_block(SIGParser::Layout_blockContext * /*ctx*/) override { } - - virtual void enterLayout_definition(SIGParser::Layout_definitionContext * /*ctx*/) override { } - virtual void exitLayout_definition(SIGParser::Layout_definitionContext * /*ctx*/) override { } - - virtual void enterTable_stat(SIGParser::Table_statContext * /*ctx*/) override { } - virtual void exitTable_stat(SIGParser::Table_statContext * /*ctx*/) override { } - - virtual void enterFunction_definition(SIGParser::Function_definitionContext * /*ctx*/) override { } - virtual void exitFunction_definition(SIGParser::Function_definitionContext * /*ctx*/) override { } - - virtual void enterFunction_params(SIGParser::Function_paramsContext * /*ctx*/) override { } - virtual void exitFunction_params(SIGParser::Function_paramsContext * /*ctx*/) override { } - - virtual void enterFunction_semantic(SIGParser::Function_semanticContext * /*ctx*/) override { } - virtual void exitFunction_semantic(SIGParser::Function_semanticContext * /*ctx*/) override { } - - virtual void enterTable_block(SIGParser::Table_blockContext * /*ctx*/) override { } - virtual void exitTable_block(SIGParser::Table_blockContext * /*ctx*/) override { } - - virtual void enterTable_definition(SIGParser::Table_definitionContext * /*ctx*/) override { } - virtual void exitTable_definition(SIGParser::Table_definitionContext * /*ctx*/) override { } - - virtual void enterRt_color_declaration(SIGParser::Rt_color_declarationContext * /*ctx*/) override { } - virtual void exitRt_color_declaration(SIGParser::Rt_color_declarationContext * /*ctx*/) override { } - - virtual void enterRt_ds_declaration(SIGParser::Rt_ds_declarationContext * /*ctx*/) override { } - virtual void exitRt_ds_declaration(SIGParser::Rt_ds_declarationContext * /*ctx*/) override { } - - virtual void enterRt_stat(SIGParser::Rt_statContext * /*ctx*/) override { } - virtual void exitRt_stat(SIGParser::Rt_statContext * /*ctx*/) override { } - - virtual void enterRt_block(SIGParser::Rt_blockContext * /*ctx*/) override { } - virtual void exitRt_block(SIGParser::Rt_blockContext * /*ctx*/) override { } - - virtual void enterRt_definition(SIGParser::Rt_definitionContext * /*ctx*/) override { } - virtual void exitRt_definition(SIGParser::Rt_definitionContext * /*ctx*/) override { } - - virtual void enterArray_value_holder(SIGParser::Array_value_holderContext * /*ctx*/) override { } - virtual void exitArray_value_holder(SIGParser::Array_value_holderContext * /*ctx*/) override { } - - virtual void enterArray_value_ids(SIGParser::Array_value_idsContext * /*ctx*/) override { } - virtual void exitArray_value_ids(SIGParser::Array_value_idsContext * /*ctx*/) override { } - - virtual void enterRoot_sig(SIGParser::Root_sigContext * /*ctx*/) override { } - virtual void exitRoot_sig(SIGParser::Root_sigContext * /*ctx*/) override { } - - virtual void enterShader(SIGParser::ShaderContext * /*ctx*/) override { } - virtual void exitShader(SIGParser::ShaderContext * /*ctx*/) override { } - - virtual void enterCompute_pso_stat(SIGParser::Compute_pso_statContext * /*ctx*/) override { } - virtual void exitCompute_pso_stat(SIGParser::Compute_pso_statContext * /*ctx*/) override { } - - virtual void enterCompute_pso_block(SIGParser::Compute_pso_blockContext * /*ctx*/) override { } - virtual void exitCompute_pso_block(SIGParser::Compute_pso_blockContext * /*ctx*/) override { } - - virtual void enterCompute_pso_definition(SIGParser::Compute_pso_definitionContext * /*ctx*/) override { } - virtual void exitCompute_pso_definition(SIGParser::Compute_pso_definitionContext * /*ctx*/) override { } - - virtual void enterGraphics_pso_stat(SIGParser::Graphics_pso_statContext * /*ctx*/) override { } - virtual void exitGraphics_pso_stat(SIGParser::Graphics_pso_statContext * /*ctx*/) override { } - - virtual void enterGraphics_pso_block(SIGParser::Graphics_pso_blockContext * /*ctx*/) override { } - virtual void exitGraphics_pso_block(SIGParser::Graphics_pso_blockContext * /*ctx*/) override { } - - virtual void enterGraphics_pso_definition(SIGParser::Graphics_pso_definitionContext * /*ctx*/) override { } - virtual void exitGraphics_pso_definition(SIGParser::Graphics_pso_definitionContext * /*ctx*/) override { } - - virtual void enterRtx_pso_stat(SIGParser::Rtx_pso_statContext * /*ctx*/) override { } - virtual void exitRtx_pso_stat(SIGParser::Rtx_pso_statContext * /*ctx*/) override { } - - virtual void enterRtx_pso_block(SIGParser::Rtx_pso_blockContext * /*ctx*/) override { } - virtual void exitRtx_pso_block(SIGParser::Rtx_pso_blockContext * /*ctx*/) override { } - - virtual void enterRtx_pso_definition(SIGParser::Rtx_pso_definitionContext * /*ctx*/) override { } - virtual void exitRtx_pso_definition(SIGParser::Rtx_pso_definitionContext * /*ctx*/) override { } - - virtual void enterNode_param_id(SIGParser::Node_param_idContext * /*ctx*/) override { } - virtual void exitNode_param_id(SIGParser::Node_param_idContext * /*ctx*/) override { } - - virtual void enterNode_param(SIGParser::Node_paramContext * /*ctx*/) override { } - virtual void exitNode_param(SIGParser::Node_paramContext * /*ctx*/) override { } - - virtual void enterNode_output_decl(SIGParser::Node_output_declContext * /*ctx*/) override { } - virtual void exitNode_output_decl(SIGParser::Node_output_declContext * /*ctx*/) override { } - - virtual void enterNode_stat(SIGParser::Node_statContext * /*ctx*/) override { } - virtual void exitNode_stat(SIGParser::Node_statContext * /*ctx*/) override { } - - virtual void enterNode_block(SIGParser::Node_blockContext * /*ctx*/) override { } - virtual void exitNode_block(SIGParser::Node_blockContext * /*ctx*/) override { } - - virtual void enterNode_definition(SIGParser::Node_definitionContext * /*ctx*/) override { } - virtual void exitNode_definition(SIGParser::Node_definitionContext * /*ctx*/) override { } - - virtual void enterWorkgraph_pso_stat(SIGParser::Workgraph_pso_statContext * /*ctx*/) override { } - virtual void exitWorkgraph_pso_stat(SIGParser::Workgraph_pso_statContext * /*ctx*/) override { } - - virtual void enterWorkgraph_pso_block(SIGParser::Workgraph_pso_blockContext * /*ctx*/) override { } - virtual void exitWorkgraph_pso_block(SIGParser::Workgraph_pso_blockContext * /*ctx*/) override { } - - virtual void enterWorkgraph_pso_definition(SIGParser::Workgraph_pso_definitionContext * /*ctx*/) override { } - virtual void exitWorkgraph_pso_definition(SIGParser::Workgraph_pso_definitionContext * /*ctx*/) override { } - - virtual void enterRtx_pass_stat(SIGParser::Rtx_pass_statContext * /*ctx*/) override { } - virtual void exitRtx_pass_stat(SIGParser::Rtx_pass_statContext * /*ctx*/) override { } - - virtual void enterRtx_pass_block(SIGParser::Rtx_pass_blockContext * /*ctx*/) override { } - virtual void exitRtx_pass_block(SIGParser::Rtx_pass_blockContext * /*ctx*/) override { } - - virtual void enterRtx_pass_definition(SIGParser::Rtx_pass_definitionContext * /*ctx*/) override { } - virtual void exitRtx_pass_definition(SIGParser::Rtx_pass_definitionContext * /*ctx*/) override { } - - virtual void enterRtx_raygen_stat(SIGParser::Rtx_raygen_statContext * /*ctx*/) override { } - virtual void exitRtx_raygen_stat(SIGParser::Rtx_raygen_statContext * /*ctx*/) override { } - - virtual void enterRtx_raygen_block(SIGParser::Rtx_raygen_blockContext * /*ctx*/) override { } - virtual void exitRtx_raygen_block(SIGParser::Rtx_raygen_blockContext * /*ctx*/) override { } - - virtual void enterRtx_raygen_definition(SIGParser::Rtx_raygen_definitionContext * /*ctx*/) override { } - virtual void exitRtx_raygen_definition(SIGParser::Rtx_raygen_definitionContext * /*ctx*/) override { } - - virtual void enterView_declaration(SIGParser::View_declarationContext * /*ctx*/) override { } - virtual void exitView_declaration(SIGParser::View_declarationContext * /*ctx*/) override { } - - virtual void enterView_stat(SIGParser::View_statContext * /*ctx*/) override { } - virtual void exitView_stat(SIGParser::View_statContext * /*ctx*/) override { } - - virtual void enterView_block(SIGParser::View_blockContext * /*ctx*/) override { } - virtual void exitView_block(SIGParser::View_blockContext * /*ctx*/) override { } - - virtual void enterView_definition(SIGParser::View_definitionContext * /*ctx*/) override { } - virtual void exitView_definition(SIGParser::View_definitionContext * /*ctx*/) override { } - - virtual void enterPass_definition(SIGParser::Pass_definitionContext * /*ctx*/) override { } - virtual void exitPass_definition(SIGParser::Pass_definitionContext * /*ctx*/) override { } - - virtual void enterPipeline_stat(SIGParser::Pipeline_statContext * /*ctx*/) override { } - virtual void exitPipeline_stat(SIGParser::Pipeline_statContext * /*ctx*/) override { } - - virtual void enterPipeline_block(SIGParser::Pipeline_blockContext * /*ctx*/) override { } - virtual void exitPipeline_block(SIGParser::Pipeline_blockContext * /*ctx*/) override { } - - virtual void enterPipeline_definition(SIGParser::Pipeline_definitionContext * /*ctx*/) override { } - virtual void exitPipeline_definition(SIGParser::Pipeline_definitionContext * /*ctx*/) override { } - - virtual void enterEnum_value_declaration(SIGParser::Enum_value_declarationContext * /*ctx*/) override { } - virtual void exitEnum_value_declaration(SIGParser::Enum_value_declarationContext * /*ctx*/) override { } - - virtual void enterEnum_stat(SIGParser::Enum_statContext * /*ctx*/) override { } - virtual void exitEnum_stat(SIGParser::Enum_statContext * /*ctx*/) override { } - - virtual void enterEnum_block(SIGParser::Enum_blockContext * /*ctx*/) override { } - virtual void exitEnum_block(SIGParser::Enum_blockContext * /*ctx*/) override { } - - virtual void enterEnum_definition(SIGParser::Enum_definitionContext * /*ctx*/) override { } - virtual void exitEnum_definition(SIGParser::Enum_definitionContext * /*ctx*/) override { } - - virtual void enterShader_type(SIGParser::Shader_typeContext * /*ctx*/) override { } - virtual void exitShader_type(SIGParser::Shader_typeContext * /*ctx*/) override { } - - virtual void enterPso_param_id(SIGParser::Pso_param_idContext * /*ctx*/) override { } - virtual void exitPso_param_id(SIGParser::Pso_param_idContext * /*ctx*/) override { } - - virtual void enterBool_type(SIGParser::Bool_typeContext * /*ctx*/) override { } - virtual void exitBool_type(SIGParser::Bool_typeContext * /*ctx*/) override { } - - - virtual void enterEveryRule(antlr4::ParserRuleContext * /*ctx*/) override { } - virtual void exitEveryRule(antlr4::ParserRuleContext * /*ctx*/) override { } - virtual void visitTerminal(antlr4::tree::TerminalNode * /*node*/) override { } - virtual void visitErrorNode(antlr4::tree::ErrorNode * /*node*/) override { } - -}; - diff --git a/sources/SIGParser/.antlr/SIGBaseVisitor.cpp b/sources/SIGParser/.antlr/SIGBaseVisitor.cpp deleted file mode 100644 index ceb2c1bf8..000000000 --- a/sources/SIGParser/.antlr/SIGBaseVisitor.cpp +++ /dev/null @@ -1,7 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - - -#include "SIGBaseVisitor.h" - - diff --git a/sources/SIGParser/.antlr/SIGBaseVisitor.h b/sources/SIGParser/.antlr/SIGBaseVisitor.h deleted file mode 100644 index e904d1efe..000000000 --- a/sources/SIGParser/.antlr/SIGBaseVisitor.h +++ /dev/null @@ -1,396 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - -#pragma once - - -#include "antlr4-runtime.h" -#include "SIGVisitor.h" - - -/** - * This class provides an empty implementation of SIGVisitor, which can be - * extended to create a visitor which only needs to handle a subset of the available methods. - */ -class SIGBaseVisitor : public SIGVisitor { -public: - - virtual std::any visitParse(SIGParser::ParseContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitConst_definition(SIGParser::Const_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitBind_option(SIGParser::Bind_optionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitCond_expr(SIGParser::Cond_exprContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitCond_term(SIGParser::Cond_termContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitQualified_ref(SIGParser::Qualified_refContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitMember_ref(SIGParser::Member_refContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitCond_op(SIGParser::Cond_opContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitFlag_value_holder(SIGParser::Flag_value_holderContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRaw_value(SIGParser::Raw_valueContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitOptions_assign(SIGParser::Options_assignContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitOption(SIGParser::OptionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitOption_block(SIGParser::Option_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitArray_count_id(SIGParser::Array_count_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitArray(SIGParser::ArrayContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitValue_declaration(SIGParser::Value_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitSlot_declaration(SIGParser::Slot_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitSampler_declaration(SIGParser::Sampler_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitDefine_declaration(SIGParser::Define_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtv_formats_declaration(SIGParser::Rtv_formats_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitBlends_declaration(SIGParser::Blends_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPointer(SIGParser::PointerContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPso_param(SIGParser::Pso_paramContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitClass_no_template(SIGParser::Class_no_templateContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitType_with_template(SIGParser::Type_with_templateContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitInherit_id(SIGParser::Inherit_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitName_id(SIGParser::Name_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitOption_id(SIGParser::Option_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitOwner_id(SIGParser::Owner_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitTemplate_id(SIGParser::Template_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitFunction_id(SIGParser::Function_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitValue_id(SIGParser::Value_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitValue_id_ignore(SIGParser::Value_id_ignoreContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitType_id(SIGParser::Type_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitInsert_block(SIGParser::Insert_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitShader_path(SIGParser::Shader_pathContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitInherit(SIGParser::InheritContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitLayout_stat(SIGParser::Layout_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitLayout_block(SIGParser::Layout_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitLayout_definition(SIGParser::Layout_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitTable_stat(SIGParser::Table_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitFunction_definition(SIGParser::Function_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitFunction_params(SIGParser::Function_paramsContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitFunction_semantic(SIGParser::Function_semanticContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitTable_block(SIGParser::Table_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitTable_definition(SIGParser::Table_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRt_color_declaration(SIGParser::Rt_color_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRt_ds_declaration(SIGParser::Rt_ds_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRt_stat(SIGParser::Rt_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRt_block(SIGParser::Rt_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRt_definition(SIGParser::Rt_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitArray_value_holder(SIGParser::Array_value_holderContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitArray_value_ids(SIGParser::Array_value_idsContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRoot_sig(SIGParser::Root_sigContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitShader(SIGParser::ShaderContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitCompute_pso_stat(SIGParser::Compute_pso_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitCompute_pso_block(SIGParser::Compute_pso_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitCompute_pso_definition(SIGParser::Compute_pso_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitGraphics_pso_stat(SIGParser::Graphics_pso_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitGraphics_pso_block(SIGParser::Graphics_pso_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitGraphics_pso_definition(SIGParser::Graphics_pso_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_pso_stat(SIGParser::Rtx_pso_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_pso_block(SIGParser::Rtx_pso_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_pso_definition(SIGParser::Rtx_pso_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitNode_param_id(SIGParser::Node_param_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitNode_param(SIGParser::Node_paramContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitNode_output_decl(SIGParser::Node_output_declContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitNode_stat(SIGParser::Node_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitNode_block(SIGParser::Node_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitNode_definition(SIGParser::Node_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitWorkgraph_pso_stat(SIGParser::Workgraph_pso_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitWorkgraph_pso_block(SIGParser::Workgraph_pso_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitWorkgraph_pso_definition(SIGParser::Workgraph_pso_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_pass_stat(SIGParser::Rtx_pass_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_pass_block(SIGParser::Rtx_pass_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_pass_definition(SIGParser::Rtx_pass_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_raygen_stat(SIGParser::Rtx_raygen_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_raygen_block(SIGParser::Rtx_raygen_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitRtx_raygen_definition(SIGParser::Rtx_raygen_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitView_declaration(SIGParser::View_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitView_stat(SIGParser::View_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitView_block(SIGParser::View_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitView_definition(SIGParser::View_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPass_definition(SIGParser::Pass_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPipeline_stat(SIGParser::Pipeline_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPipeline_block(SIGParser::Pipeline_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPipeline_definition(SIGParser::Pipeline_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitEnum_value_declaration(SIGParser::Enum_value_declarationContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitEnum_stat(SIGParser::Enum_statContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitEnum_block(SIGParser::Enum_blockContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitEnum_definition(SIGParser::Enum_definitionContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitShader_type(SIGParser::Shader_typeContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitPso_param_id(SIGParser::Pso_param_idContext *ctx) override { - return visitChildren(ctx); - } - - virtual std::any visitBool_type(SIGParser::Bool_typeContext *ctx) override { - return visitChildren(ctx); - } - - -}; - diff --git a/sources/SIGParser/.antlr/SIGListener.cpp b/sources/SIGParser/.antlr/SIGListener.cpp deleted file mode 100644 index 5f2ff7d3c..000000000 --- a/sources/SIGParser/.antlr/SIGListener.cpp +++ /dev/null @@ -1,7 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - - -#include "SIGListener.h" - - diff --git a/sources/SIGParser/.antlr/SIGListener.h b/sources/SIGParser/.antlr/SIGListener.h deleted file mode 100644 index 35fdeac08..000000000 --- a/sources/SIGParser/.antlr/SIGListener.h +++ /dev/null @@ -1,301 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - -#pragma once - - -#include "antlr4-runtime.h" -#include "SIGParser.h" - - -/** - * This interface defines an abstract listener for a parse tree produced by SIGParser. - */ -class SIGListener : public antlr4::tree::ParseTreeListener { -public: - - virtual void enterParse(SIGParser::ParseContext *ctx) = 0; - virtual void exitParse(SIGParser::ParseContext *ctx) = 0; - - virtual void enterConst_definition(SIGParser::Const_definitionContext *ctx) = 0; - virtual void exitConst_definition(SIGParser::Const_definitionContext *ctx) = 0; - - virtual void enterBind_option(SIGParser::Bind_optionContext *ctx) = 0; - virtual void exitBind_option(SIGParser::Bind_optionContext *ctx) = 0; - - virtual void enterCond_expr(SIGParser::Cond_exprContext *ctx) = 0; - virtual void exitCond_expr(SIGParser::Cond_exprContext *ctx) = 0; - - virtual void enterCond_term(SIGParser::Cond_termContext *ctx) = 0; - virtual void exitCond_term(SIGParser::Cond_termContext *ctx) = 0; - - virtual void enterQualified_ref(SIGParser::Qualified_refContext *ctx) = 0; - virtual void exitQualified_ref(SIGParser::Qualified_refContext *ctx) = 0; - - virtual void enterMember_ref(SIGParser::Member_refContext *ctx) = 0; - virtual void exitMember_ref(SIGParser::Member_refContext *ctx) = 0; - - virtual void enterCond_op(SIGParser::Cond_opContext *ctx) = 0; - virtual void exitCond_op(SIGParser::Cond_opContext *ctx) = 0; - - virtual void enterFlag_value_holder(SIGParser::Flag_value_holderContext *ctx) = 0; - virtual void exitFlag_value_holder(SIGParser::Flag_value_holderContext *ctx) = 0; - - virtual void enterRaw_value(SIGParser::Raw_valueContext *ctx) = 0; - virtual void exitRaw_value(SIGParser::Raw_valueContext *ctx) = 0; - - virtual void enterOptions_assign(SIGParser::Options_assignContext *ctx) = 0; - virtual void exitOptions_assign(SIGParser::Options_assignContext *ctx) = 0; - - virtual void enterOption(SIGParser::OptionContext *ctx) = 0; - virtual void exitOption(SIGParser::OptionContext *ctx) = 0; - - virtual void enterOption_block(SIGParser::Option_blockContext *ctx) = 0; - virtual void exitOption_block(SIGParser::Option_blockContext *ctx) = 0; - - virtual void enterArray_count_id(SIGParser::Array_count_idContext *ctx) = 0; - virtual void exitArray_count_id(SIGParser::Array_count_idContext *ctx) = 0; - - virtual void enterArray(SIGParser::ArrayContext *ctx) = 0; - virtual void exitArray(SIGParser::ArrayContext *ctx) = 0; - - virtual void enterValue_declaration(SIGParser::Value_declarationContext *ctx) = 0; - virtual void exitValue_declaration(SIGParser::Value_declarationContext *ctx) = 0; - - virtual void enterSlot_declaration(SIGParser::Slot_declarationContext *ctx) = 0; - virtual void exitSlot_declaration(SIGParser::Slot_declarationContext *ctx) = 0; - - virtual void enterSampler_declaration(SIGParser::Sampler_declarationContext *ctx) = 0; - virtual void exitSampler_declaration(SIGParser::Sampler_declarationContext *ctx) = 0; - - virtual void enterDefine_declaration(SIGParser::Define_declarationContext *ctx) = 0; - virtual void exitDefine_declaration(SIGParser::Define_declarationContext *ctx) = 0; - - virtual void enterRtv_formats_declaration(SIGParser::Rtv_formats_declarationContext *ctx) = 0; - virtual void exitRtv_formats_declaration(SIGParser::Rtv_formats_declarationContext *ctx) = 0; - - virtual void enterBlends_declaration(SIGParser::Blends_declarationContext *ctx) = 0; - virtual void exitBlends_declaration(SIGParser::Blends_declarationContext *ctx) = 0; - - virtual void enterPointer(SIGParser::PointerContext *ctx) = 0; - virtual void exitPointer(SIGParser::PointerContext *ctx) = 0; - - virtual void enterPso_param(SIGParser::Pso_paramContext *ctx) = 0; - virtual void exitPso_param(SIGParser::Pso_paramContext *ctx) = 0; - - virtual void enterClass_no_template(SIGParser::Class_no_templateContext *ctx) = 0; - virtual void exitClass_no_template(SIGParser::Class_no_templateContext *ctx) = 0; - - virtual void enterType_with_template(SIGParser::Type_with_templateContext *ctx) = 0; - virtual void exitType_with_template(SIGParser::Type_with_templateContext *ctx) = 0; - - virtual void enterInherit_id(SIGParser::Inherit_idContext *ctx) = 0; - virtual void exitInherit_id(SIGParser::Inherit_idContext *ctx) = 0; - - virtual void enterName_id(SIGParser::Name_idContext *ctx) = 0; - virtual void exitName_id(SIGParser::Name_idContext *ctx) = 0; - - virtual void enterOption_id(SIGParser::Option_idContext *ctx) = 0; - virtual void exitOption_id(SIGParser::Option_idContext *ctx) = 0; - - virtual void enterOwner_id(SIGParser::Owner_idContext *ctx) = 0; - virtual void exitOwner_id(SIGParser::Owner_idContext *ctx) = 0; - - virtual void enterTemplate_id(SIGParser::Template_idContext *ctx) = 0; - virtual void exitTemplate_id(SIGParser::Template_idContext *ctx) = 0; - - virtual void enterFunction_id(SIGParser::Function_idContext *ctx) = 0; - virtual void exitFunction_id(SIGParser::Function_idContext *ctx) = 0; - - virtual void enterValue_id(SIGParser::Value_idContext *ctx) = 0; - virtual void exitValue_id(SIGParser::Value_idContext *ctx) = 0; - - virtual void enterValue_id_ignore(SIGParser::Value_id_ignoreContext *ctx) = 0; - virtual void exitValue_id_ignore(SIGParser::Value_id_ignoreContext *ctx) = 0; - - virtual void enterType_id(SIGParser::Type_idContext *ctx) = 0; - virtual void exitType_id(SIGParser::Type_idContext *ctx) = 0; - - virtual void enterInsert_block(SIGParser::Insert_blockContext *ctx) = 0; - virtual void exitInsert_block(SIGParser::Insert_blockContext *ctx) = 0; - - virtual void enterShader_path(SIGParser::Shader_pathContext *ctx) = 0; - virtual void exitShader_path(SIGParser::Shader_pathContext *ctx) = 0; - - virtual void enterInherit(SIGParser::InheritContext *ctx) = 0; - virtual void exitInherit(SIGParser::InheritContext *ctx) = 0; - - virtual void enterLayout_stat(SIGParser::Layout_statContext *ctx) = 0; - virtual void exitLayout_stat(SIGParser::Layout_statContext *ctx) = 0; - - virtual void enterLayout_block(SIGParser::Layout_blockContext *ctx) = 0; - virtual void exitLayout_block(SIGParser::Layout_blockContext *ctx) = 0; - - virtual void enterLayout_definition(SIGParser::Layout_definitionContext *ctx) = 0; - virtual void exitLayout_definition(SIGParser::Layout_definitionContext *ctx) = 0; - - virtual void enterTable_stat(SIGParser::Table_statContext *ctx) = 0; - virtual void exitTable_stat(SIGParser::Table_statContext *ctx) = 0; - - virtual void enterFunction_definition(SIGParser::Function_definitionContext *ctx) = 0; - virtual void exitFunction_definition(SIGParser::Function_definitionContext *ctx) = 0; - - virtual void enterFunction_params(SIGParser::Function_paramsContext *ctx) = 0; - virtual void exitFunction_params(SIGParser::Function_paramsContext *ctx) = 0; - - virtual void enterFunction_semantic(SIGParser::Function_semanticContext *ctx) = 0; - virtual void exitFunction_semantic(SIGParser::Function_semanticContext *ctx) = 0; - - virtual void enterTable_block(SIGParser::Table_blockContext *ctx) = 0; - virtual void exitTable_block(SIGParser::Table_blockContext *ctx) = 0; - - virtual void enterTable_definition(SIGParser::Table_definitionContext *ctx) = 0; - virtual void exitTable_definition(SIGParser::Table_definitionContext *ctx) = 0; - - virtual void enterRt_color_declaration(SIGParser::Rt_color_declarationContext *ctx) = 0; - virtual void exitRt_color_declaration(SIGParser::Rt_color_declarationContext *ctx) = 0; - - virtual void enterRt_ds_declaration(SIGParser::Rt_ds_declarationContext *ctx) = 0; - virtual void exitRt_ds_declaration(SIGParser::Rt_ds_declarationContext *ctx) = 0; - - virtual void enterRt_stat(SIGParser::Rt_statContext *ctx) = 0; - virtual void exitRt_stat(SIGParser::Rt_statContext *ctx) = 0; - - virtual void enterRt_block(SIGParser::Rt_blockContext *ctx) = 0; - virtual void exitRt_block(SIGParser::Rt_blockContext *ctx) = 0; - - virtual void enterRt_definition(SIGParser::Rt_definitionContext *ctx) = 0; - virtual void exitRt_definition(SIGParser::Rt_definitionContext *ctx) = 0; - - virtual void enterArray_value_holder(SIGParser::Array_value_holderContext *ctx) = 0; - virtual void exitArray_value_holder(SIGParser::Array_value_holderContext *ctx) = 0; - - virtual void enterArray_value_ids(SIGParser::Array_value_idsContext *ctx) = 0; - virtual void exitArray_value_ids(SIGParser::Array_value_idsContext *ctx) = 0; - - virtual void enterRoot_sig(SIGParser::Root_sigContext *ctx) = 0; - virtual void exitRoot_sig(SIGParser::Root_sigContext *ctx) = 0; - - virtual void enterShader(SIGParser::ShaderContext *ctx) = 0; - virtual void exitShader(SIGParser::ShaderContext *ctx) = 0; - - virtual void enterCompute_pso_stat(SIGParser::Compute_pso_statContext *ctx) = 0; - virtual void exitCompute_pso_stat(SIGParser::Compute_pso_statContext *ctx) = 0; - - virtual void enterCompute_pso_block(SIGParser::Compute_pso_blockContext *ctx) = 0; - virtual void exitCompute_pso_block(SIGParser::Compute_pso_blockContext *ctx) = 0; - - virtual void enterCompute_pso_definition(SIGParser::Compute_pso_definitionContext *ctx) = 0; - virtual void exitCompute_pso_definition(SIGParser::Compute_pso_definitionContext *ctx) = 0; - - virtual void enterGraphics_pso_stat(SIGParser::Graphics_pso_statContext *ctx) = 0; - virtual void exitGraphics_pso_stat(SIGParser::Graphics_pso_statContext *ctx) = 0; - - virtual void enterGraphics_pso_block(SIGParser::Graphics_pso_blockContext *ctx) = 0; - virtual void exitGraphics_pso_block(SIGParser::Graphics_pso_blockContext *ctx) = 0; - - virtual void enterGraphics_pso_definition(SIGParser::Graphics_pso_definitionContext *ctx) = 0; - virtual void exitGraphics_pso_definition(SIGParser::Graphics_pso_definitionContext *ctx) = 0; - - virtual void enterRtx_pso_stat(SIGParser::Rtx_pso_statContext *ctx) = 0; - virtual void exitRtx_pso_stat(SIGParser::Rtx_pso_statContext *ctx) = 0; - - virtual void enterRtx_pso_block(SIGParser::Rtx_pso_blockContext *ctx) = 0; - virtual void exitRtx_pso_block(SIGParser::Rtx_pso_blockContext *ctx) = 0; - - virtual void enterRtx_pso_definition(SIGParser::Rtx_pso_definitionContext *ctx) = 0; - virtual void exitRtx_pso_definition(SIGParser::Rtx_pso_definitionContext *ctx) = 0; - - virtual void enterNode_param_id(SIGParser::Node_param_idContext *ctx) = 0; - virtual void exitNode_param_id(SIGParser::Node_param_idContext *ctx) = 0; - - virtual void enterNode_param(SIGParser::Node_paramContext *ctx) = 0; - virtual void exitNode_param(SIGParser::Node_paramContext *ctx) = 0; - - virtual void enterNode_output_decl(SIGParser::Node_output_declContext *ctx) = 0; - virtual void exitNode_output_decl(SIGParser::Node_output_declContext *ctx) = 0; - - virtual void enterNode_stat(SIGParser::Node_statContext *ctx) = 0; - virtual void exitNode_stat(SIGParser::Node_statContext *ctx) = 0; - - virtual void enterNode_block(SIGParser::Node_blockContext *ctx) = 0; - virtual void exitNode_block(SIGParser::Node_blockContext *ctx) = 0; - - virtual void enterNode_definition(SIGParser::Node_definitionContext *ctx) = 0; - virtual void exitNode_definition(SIGParser::Node_definitionContext *ctx) = 0; - - virtual void enterWorkgraph_pso_stat(SIGParser::Workgraph_pso_statContext *ctx) = 0; - virtual void exitWorkgraph_pso_stat(SIGParser::Workgraph_pso_statContext *ctx) = 0; - - virtual void enterWorkgraph_pso_block(SIGParser::Workgraph_pso_blockContext *ctx) = 0; - virtual void exitWorkgraph_pso_block(SIGParser::Workgraph_pso_blockContext *ctx) = 0; - - virtual void enterWorkgraph_pso_definition(SIGParser::Workgraph_pso_definitionContext *ctx) = 0; - virtual void exitWorkgraph_pso_definition(SIGParser::Workgraph_pso_definitionContext *ctx) = 0; - - virtual void enterRtx_pass_stat(SIGParser::Rtx_pass_statContext *ctx) = 0; - virtual void exitRtx_pass_stat(SIGParser::Rtx_pass_statContext *ctx) = 0; - - virtual void enterRtx_pass_block(SIGParser::Rtx_pass_blockContext *ctx) = 0; - virtual void exitRtx_pass_block(SIGParser::Rtx_pass_blockContext *ctx) = 0; - - virtual void enterRtx_pass_definition(SIGParser::Rtx_pass_definitionContext *ctx) = 0; - virtual void exitRtx_pass_definition(SIGParser::Rtx_pass_definitionContext *ctx) = 0; - - virtual void enterRtx_raygen_stat(SIGParser::Rtx_raygen_statContext *ctx) = 0; - virtual void exitRtx_raygen_stat(SIGParser::Rtx_raygen_statContext *ctx) = 0; - - virtual void enterRtx_raygen_block(SIGParser::Rtx_raygen_blockContext *ctx) = 0; - virtual void exitRtx_raygen_block(SIGParser::Rtx_raygen_blockContext *ctx) = 0; - - virtual void enterRtx_raygen_definition(SIGParser::Rtx_raygen_definitionContext *ctx) = 0; - virtual void exitRtx_raygen_definition(SIGParser::Rtx_raygen_definitionContext *ctx) = 0; - - virtual void enterView_declaration(SIGParser::View_declarationContext *ctx) = 0; - virtual void exitView_declaration(SIGParser::View_declarationContext *ctx) = 0; - - virtual void enterView_stat(SIGParser::View_statContext *ctx) = 0; - virtual void exitView_stat(SIGParser::View_statContext *ctx) = 0; - - virtual void enterView_block(SIGParser::View_blockContext *ctx) = 0; - virtual void exitView_block(SIGParser::View_blockContext *ctx) = 0; - - virtual void enterView_definition(SIGParser::View_definitionContext *ctx) = 0; - virtual void exitView_definition(SIGParser::View_definitionContext *ctx) = 0; - - virtual void enterPass_definition(SIGParser::Pass_definitionContext *ctx) = 0; - virtual void exitPass_definition(SIGParser::Pass_definitionContext *ctx) = 0; - - virtual void enterPipeline_stat(SIGParser::Pipeline_statContext *ctx) = 0; - virtual void exitPipeline_stat(SIGParser::Pipeline_statContext *ctx) = 0; - - virtual void enterPipeline_block(SIGParser::Pipeline_blockContext *ctx) = 0; - virtual void exitPipeline_block(SIGParser::Pipeline_blockContext *ctx) = 0; - - virtual void enterPipeline_definition(SIGParser::Pipeline_definitionContext *ctx) = 0; - virtual void exitPipeline_definition(SIGParser::Pipeline_definitionContext *ctx) = 0; - - virtual void enterEnum_value_declaration(SIGParser::Enum_value_declarationContext *ctx) = 0; - virtual void exitEnum_value_declaration(SIGParser::Enum_value_declarationContext *ctx) = 0; - - virtual void enterEnum_stat(SIGParser::Enum_statContext *ctx) = 0; - virtual void exitEnum_stat(SIGParser::Enum_statContext *ctx) = 0; - - virtual void enterEnum_block(SIGParser::Enum_blockContext *ctx) = 0; - virtual void exitEnum_block(SIGParser::Enum_blockContext *ctx) = 0; - - virtual void enterEnum_definition(SIGParser::Enum_definitionContext *ctx) = 0; - virtual void exitEnum_definition(SIGParser::Enum_definitionContext *ctx) = 0; - - virtual void enterShader_type(SIGParser::Shader_typeContext *ctx) = 0; - virtual void exitShader_type(SIGParser::Shader_typeContext *ctx) = 0; - - virtual void enterPso_param_id(SIGParser::Pso_param_idContext *ctx) = 0; - virtual void exitPso_param_id(SIGParser::Pso_param_idContext *ctx) = 0; - - virtual void enterBool_type(SIGParser::Bool_typeContext *ctx) = 0; - virtual void exitBool_type(SIGParser::Bool_typeContext *ctx) = 0; - - -}; - diff --git a/sources/SIGParser/.antlr/SIGVisitor.cpp b/sources/SIGParser/.antlr/SIGVisitor.cpp deleted file mode 100644 index a40480652..000000000 --- a/sources/SIGParser/.antlr/SIGVisitor.cpp +++ /dev/null @@ -1,7 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - - -#include "SIGVisitor.h" - - diff --git a/sources/SIGParser/.antlr/SIGVisitor.h b/sources/SIGParser/.antlr/SIGVisitor.h deleted file mode 100644 index 0a1055145..000000000 --- a/sources/SIGParser/.antlr/SIGVisitor.h +++ /dev/null @@ -1,212 +0,0 @@ - -// Generated from sources/SIGParser/SIG.g4 by ANTLR 4.11.1 - -#pragma once - - -#include "antlr4-runtime.h" -#include "SIGParser.h" - - - -/** - * This class defines an abstract visitor for a parse tree - * produced by SIGParser. - */ -class SIGVisitor : public antlr4::tree::AbstractParseTreeVisitor { -public: - - /** - * Visit parse trees produced by SIGParser. - */ - virtual std::any visitParse(SIGParser::ParseContext *context) = 0; - - virtual std::any visitConst_definition(SIGParser::Const_definitionContext *context) = 0; - - virtual std::any visitBind_option(SIGParser::Bind_optionContext *context) = 0; - - virtual std::any visitCond_expr(SIGParser::Cond_exprContext *context) = 0; - - virtual std::any visitCond_term(SIGParser::Cond_termContext *context) = 0; - - virtual std::any visitQualified_ref(SIGParser::Qualified_refContext *context) = 0; - - virtual std::any visitMember_ref(SIGParser::Member_refContext *context) = 0; - - virtual std::any visitCond_op(SIGParser::Cond_opContext *context) = 0; - - virtual std::any visitFlag_value_holder(SIGParser::Flag_value_holderContext *context) = 0; - - virtual std::any visitRaw_value(SIGParser::Raw_valueContext *context) = 0; - - virtual std::any visitOptions_assign(SIGParser::Options_assignContext *context) = 0; - - virtual std::any visitOption(SIGParser::OptionContext *context) = 0; - - virtual std::any visitOption_block(SIGParser::Option_blockContext *context) = 0; - - virtual std::any visitArray_count_id(SIGParser::Array_count_idContext *context) = 0; - - virtual std::any visitArray(SIGParser::ArrayContext *context) = 0; - - virtual std::any visitValue_declaration(SIGParser::Value_declarationContext *context) = 0; - - virtual std::any visitSlot_declaration(SIGParser::Slot_declarationContext *context) = 0; - - virtual std::any visitSampler_declaration(SIGParser::Sampler_declarationContext *context) = 0; - - virtual std::any visitDefine_declaration(SIGParser::Define_declarationContext *context) = 0; - - virtual std::any visitRtv_formats_declaration(SIGParser::Rtv_formats_declarationContext *context) = 0; - - virtual std::any visitBlends_declaration(SIGParser::Blends_declarationContext *context) = 0; - - virtual std::any visitPointer(SIGParser::PointerContext *context) = 0; - - virtual std::any visitPso_param(SIGParser::Pso_paramContext *context) = 0; - - virtual std::any visitClass_no_template(SIGParser::Class_no_templateContext *context) = 0; - - virtual std::any visitType_with_template(SIGParser::Type_with_templateContext *context) = 0; - - virtual std::any visitInherit_id(SIGParser::Inherit_idContext *context) = 0; - - virtual std::any visitName_id(SIGParser::Name_idContext *context) = 0; - - virtual std::any visitOption_id(SIGParser::Option_idContext *context) = 0; - - virtual std::any visitOwner_id(SIGParser::Owner_idContext *context) = 0; - - virtual std::any visitTemplate_id(SIGParser::Template_idContext *context) = 0; - - virtual std::any visitFunction_id(SIGParser::Function_idContext *context) = 0; - - virtual std::any visitValue_id(SIGParser::Value_idContext *context) = 0; - - virtual std::any visitValue_id_ignore(SIGParser::Value_id_ignoreContext *context) = 0; - - virtual std::any visitType_id(SIGParser::Type_idContext *context) = 0; - - virtual std::any visitInsert_block(SIGParser::Insert_blockContext *context) = 0; - - virtual std::any visitShader_path(SIGParser::Shader_pathContext *context) = 0; - - virtual std::any visitInherit(SIGParser::InheritContext *context) = 0; - - virtual std::any visitLayout_stat(SIGParser::Layout_statContext *context) = 0; - - virtual std::any visitLayout_block(SIGParser::Layout_blockContext *context) = 0; - - virtual std::any visitLayout_definition(SIGParser::Layout_definitionContext *context) = 0; - - virtual std::any visitTable_stat(SIGParser::Table_statContext *context) = 0; - - virtual std::any visitFunction_definition(SIGParser::Function_definitionContext *context) = 0; - - virtual std::any visitFunction_params(SIGParser::Function_paramsContext *context) = 0; - - virtual std::any visitFunction_semantic(SIGParser::Function_semanticContext *context) = 0; - - virtual std::any visitTable_block(SIGParser::Table_blockContext *context) = 0; - - virtual std::any visitTable_definition(SIGParser::Table_definitionContext *context) = 0; - - virtual std::any visitRt_color_declaration(SIGParser::Rt_color_declarationContext *context) = 0; - - virtual std::any visitRt_ds_declaration(SIGParser::Rt_ds_declarationContext *context) = 0; - - virtual std::any visitRt_stat(SIGParser::Rt_statContext *context) = 0; - - virtual std::any visitRt_block(SIGParser::Rt_blockContext *context) = 0; - - virtual std::any visitRt_definition(SIGParser::Rt_definitionContext *context) = 0; - - virtual std::any visitArray_value_holder(SIGParser::Array_value_holderContext *context) = 0; - - virtual std::any visitArray_value_ids(SIGParser::Array_value_idsContext *context) = 0; - - virtual std::any visitRoot_sig(SIGParser::Root_sigContext *context) = 0; - - virtual std::any visitShader(SIGParser::ShaderContext *context) = 0; - - virtual std::any visitCompute_pso_stat(SIGParser::Compute_pso_statContext *context) = 0; - - virtual std::any visitCompute_pso_block(SIGParser::Compute_pso_blockContext *context) = 0; - - virtual std::any visitCompute_pso_definition(SIGParser::Compute_pso_definitionContext *context) = 0; - - virtual std::any visitGraphics_pso_stat(SIGParser::Graphics_pso_statContext *context) = 0; - - virtual std::any visitGraphics_pso_block(SIGParser::Graphics_pso_blockContext *context) = 0; - - virtual std::any visitGraphics_pso_definition(SIGParser::Graphics_pso_definitionContext *context) = 0; - - virtual std::any visitRtx_pso_stat(SIGParser::Rtx_pso_statContext *context) = 0; - - virtual std::any visitRtx_pso_block(SIGParser::Rtx_pso_blockContext *context) = 0; - - virtual std::any visitRtx_pso_definition(SIGParser::Rtx_pso_definitionContext *context) = 0; - - virtual std::any visitNode_param_id(SIGParser::Node_param_idContext *context) = 0; - - virtual std::any visitNode_param(SIGParser::Node_paramContext *context) = 0; - - virtual std::any visitNode_output_decl(SIGParser::Node_output_declContext *context) = 0; - - virtual std::any visitNode_stat(SIGParser::Node_statContext *context) = 0; - - virtual std::any visitNode_block(SIGParser::Node_blockContext *context) = 0; - - virtual std::any visitNode_definition(SIGParser::Node_definitionContext *context) = 0; - - virtual std::any visitWorkgraph_pso_stat(SIGParser::Workgraph_pso_statContext *context) = 0; - - virtual std::any visitWorkgraph_pso_block(SIGParser::Workgraph_pso_blockContext *context) = 0; - - virtual std::any visitWorkgraph_pso_definition(SIGParser::Workgraph_pso_definitionContext *context) = 0; - - virtual std::any visitRtx_pass_stat(SIGParser::Rtx_pass_statContext *context) = 0; - - virtual std::any visitRtx_pass_block(SIGParser::Rtx_pass_blockContext *context) = 0; - - virtual std::any visitRtx_pass_definition(SIGParser::Rtx_pass_definitionContext *context) = 0; - - virtual std::any visitRtx_raygen_stat(SIGParser::Rtx_raygen_statContext *context) = 0; - - virtual std::any visitRtx_raygen_block(SIGParser::Rtx_raygen_blockContext *context) = 0; - - virtual std::any visitRtx_raygen_definition(SIGParser::Rtx_raygen_definitionContext *context) = 0; - - virtual std::any visitView_declaration(SIGParser::View_declarationContext *context) = 0; - - virtual std::any visitView_stat(SIGParser::View_statContext *context) = 0; - - virtual std::any visitView_block(SIGParser::View_blockContext *context) = 0; - - virtual std::any visitView_definition(SIGParser::View_definitionContext *context) = 0; - - virtual std::any visitPass_definition(SIGParser::Pass_definitionContext *context) = 0; - - virtual std::any visitPipeline_stat(SIGParser::Pipeline_statContext *context) = 0; - - virtual std::any visitPipeline_block(SIGParser::Pipeline_blockContext *context) = 0; - - virtual std::any visitPipeline_definition(SIGParser::Pipeline_definitionContext *context) = 0; - - virtual std::any visitEnum_value_declaration(SIGParser::Enum_value_declarationContext *context) = 0; - - virtual std::any visitEnum_stat(SIGParser::Enum_statContext *context) = 0; - - virtual std::any visitEnum_block(SIGParser::Enum_blockContext *context) = 0; - - virtual std::any visitEnum_definition(SIGParser::Enum_definitionContext *context) = 0; - - virtual std::any visitShader_type(SIGParser::Shader_typeContext *context) = 0; - - virtual std::any visitPso_param_id(SIGParser::Pso_param_idContext *context) = 0; - - virtual std::any visitBool_type(SIGParser::Bool_typeContext *context) = 0; - - -}; - diff --git a/sources/SIGParser/editor/SigCommands.vsct b/sources/SIGParser/editor/SigCommands.vsct deleted file mode 100644 index 55c81d498..000000000 --- a/sources/SIGParser/editor/SigCommands.vsct +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - DefaultDocked - - SIG - SIG - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/sources/SIGParser/output.txt b/sources/SIGParser/output.txt deleted file mode 100644 index 67a000d22..000000000 --- a/sources/SIGParser/output.txt +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/bash: line 1: ....binDebugsigparser.exe: command not found diff --git a/sources/Spectrum/main.cpp b/sources/Spectrum/main.cpp index 6d25e022e..20ea241f2 100644 --- a/sources/Spectrum/main.cpp +++ b/sources/Spectrum/main.cpp @@ -331,7 +331,7 @@ class triangle_drawer : public GUI::Elements::image, public GraphGenerator, Vari voxel_gi = std::make_shared(pipeline,scene,vsm); - // DDGI's [Multiple=5] passes (ddgi.sig) are runtime-wired, not + // DDGI's [Multiple=5] passes (ddgi.prism) are runtime-wired, not // [Static] -- see DDGI.ixx's own comment on ddgi_register_passes. ddgi_register_passes(pipeline, vsm); } @@ -412,14 +412,14 @@ class triangle_drawer : public GUI::Elements::image, public GraphGenerator, Vari g_upscaling_enabled = downsampled; // Mirrors g_upscaler_type/g_upscaling_enabled into the SIG context -- - // see UpscalingDLSS.sig's own comment on UpscalerSelectors for why. + // see UpscalingDLSS.prism's own comment on UpscalerSelectors for why. { auto& upscaler_ctx = graph.get_context(); upscaler_ctx.upscaler_type = g_upscaler_type; upscaler_ctx.upscaling_enabled = g_upscaling_enabled; } // Mirrors fixed hardware/SDK capabilities into the SIG context -- see - // raytracing.sig's own comment on RenderDeviceCapabilities for why. + // raytracing.prism's own comment on RenderDeviceCapabilities for why. { auto& device_caps = graph.get_context(); device_caps.rtx_supported = RenderSystem::get().device().is_rtx_supported(); @@ -585,7 +585,7 @@ class triangle_drawer : public GUI::Elements::image, public GraphGenerator, Vari frameInfo.GetBrdf() = EngineAssets::brdf.get_asset()->get_texture()->texture_3d(); frameInfo.GetBestFitNormals() = EngineAssets::best_fit_normals.get_asset()->get_texture()->texture_2d(); - // Material texture LOD bias — see FrameData.sig's mipBias comment. + // Material texture LOD bias — see FrameData.prism's mipBias comment. { auto& vp = graph.get_context(); frameInfo.GetMipBias() = downsampled @@ -594,7 +594,7 @@ class triangle_drawer : public GUI::Elements::image, public GraphGenerator, Vari } // Hi-Z pyramid for per-meshlet occlusion; the PSO permutation - // decides whether it is sampled (scene.sig's HiZOcclusion). + // decides whether it is sampled (scene.prism's HiZOcclusion). { auto hiz = graph.builder.get(FrameGraph::ResourceID::GBuffer_HiZ_UAV); if (hiz && hiz->resource) @@ -836,7 +836,7 @@ class material_settings_panel : public GUI::base }; // This frame's asset previews that want a GPU pass, one per claimed -// Passes::AssetPreview instance slot (ui.sig). asset_preview_content::generate() +// Passes::AssetPreview instance slot (ui.prism). asset_preview_content::generate() // appends during create_graph; setup_graph drains the list into the pipeline's // render_funcs just before add_passes, which then registers exactly the filled // slots. @@ -991,7 +991,7 @@ class asset_preview_content : public GUI::base, public FrameGraph::GraphGenerato { if (!m_view) return; // only the texture preview needs a GPU pass - // The pass itself is declared in ui.sig (AssetPreview, [Multiple=16], + // The pass itself is declared in ui.prism (AssetPreview, [Multiple=16], // [Required] because it writes nothing graph-tracked) and its setup is // generated — claiming a slot here is the whole registration. graph.get_context().renders.push_back( diff --git a/sources/Test/Tests/Test.HAL.SIG.ixx b/sources/Test/Tests/Test.HAL.SIG.ixx index 733950d45..d163cf1a5 100644 --- a/sources/Test/Tests/Test.HAL.SIG.ixx +++ b/sources/Test/Tests/Test.HAL.SIG.ixx @@ -29,7 +29,7 @@ export namespace Test // Uses the same indirect-CBV boilerplate as the autogen Color.h header so // the binding matches the Color slot. NOTE: the register/push index must // stay in sync with workdir/shaders/autogen/Color.h — the SIG layout can - // shift slot indices when .sig files change. Color currently lives at + // shift slot indices when .prism files change. Color currently lives at // slot 8 → b8/space8 (D3D12) / _hal_push.s8 (SPIR-V). static constexpr const char* kSigColorHLSL = R"hlsl( struct CB { uint offset; }; diff --git a/workdir/shaders/autogen/BRDF.h b/workdir/shaders/autogen/BRDF.h index dc7f8be9d..78794e74d 100644 --- a/workdir/shaders/autogen/BRDF.h +++ b/workdir/shaders/autogen/BRDF.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/BlueNoise.h b/workdir/shaders/autogen/BlueNoise.h index 59f09ad00..7ea053c0b 100644 --- a/workdir/shaders/autogen/BlueNoise.h +++ b/workdir/shaders/autogen/BlueNoise.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/Clear_Constants.h b/workdir/shaders/autogen/Clear_Constants.h index 4be92cdc3..dfde1b1c7 100644 --- a/workdir/shaders/autogen/Clear_Constants.h +++ b/workdir/shaders/autogen/Clear_Constants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/Clear_UInt4Resources.h b/workdir/shaders/autogen/Clear_UInt4Resources.h index 97fc01509..7ecacf305 100644 --- a/workdir/shaders/autogen/Clear_UInt4Resources.h +++ b/workdir/shaders/autogen/Clear_UInt4Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/Color.h b/workdir/shaders/autogen/Color.h index 495ee82d2..a9c8e2b64 100644 --- a/workdir/shaders/autogen/Color.h +++ b/workdir/shaders/autogen/Color.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_8 #define SLOT_8 diff --git a/workdir/shaders/autogen/ColorRTXOutput.h b/workdir/shaders/autogen/ColorRTXOutput.h index cfc328f6c..fc73e54b3 100644 --- a/workdir/shaders/autogen/ColorRTXOutput.h +++ b/workdir/shaders/autogen/ColorRTXOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/ColorRect.h b/workdir/shaders/autogen/ColorRect.h index 47911b865..a58a3fc26 100644 --- a/workdir/shaders/autogen/ColorRect.h +++ b/workdir/shaders/autogen/ColorRect.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/CopyTexture.h b/workdir/shaders/autogen/CopyTexture.h index 344fe91d3..524e200fa 100644 --- a/workdir/shaders/autogen/CopyTexture.h +++ b/workdir/shaders/autogen/CopyTexture.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/Countour.h b/workdir/shaders/autogen/Countour.h index 4f4057d6f..909fa02cb 100644 --- a/workdir/shaders/autogen/Countour.h +++ b/workdir/shaders/autogen/Countour.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DDGIDebugData.h b/workdir/shaders/autogen/DDGIDebugData.h index 151ee73a6..22522b1c7 100644 --- a/workdir/shaders/autogen/DDGIDebugData.h +++ b/workdir/shaders/autogen/DDGIDebugData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DDGIIndirectDebugData.h b/workdir/shaders/autogen/DDGIIndirectDebugData.h index 1d843fecf..a4e6ea694 100644 --- a/workdir/shaders/autogen/DDGIIndirectDebugData.h +++ b/workdir/shaders/autogen/DDGIIndirectDebugData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DDGIInfo.h b/workdir/shaders/autogen/DDGIInfo.h index 8bbbd58ec..479a973f4 100644 --- a/workdir/shaders/autogen/DDGIInfo.h +++ b/workdir/shaders/autogen/DDGIInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DDGIProbeConvolveData.h b/workdir/shaders/autogen/DDGIProbeConvolveData.h index cbeeddf14..b48ffe04b 100644 --- a/workdir/shaders/autogen/DDGIProbeConvolveData.h +++ b/workdir/shaders/autogen/DDGIProbeConvolveData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DDGIProbeResidencyMarkData.h b/workdir/shaders/autogen/DDGIProbeResidencyMarkData.h index 88a041d50..e96f2b78e 100644 --- a/workdir/shaders/autogen/DDGIProbeResidencyMarkData.h +++ b/workdir/shaders/autogen/DDGIProbeResidencyMarkData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DDGIProbeSelectData.h b/workdir/shaders/autogen/DDGIProbeSelectData.h index 7ec86e3c8..9198d83ab 100644 --- a/workdir/shaders/autogen/DDGIProbeSelectData.h +++ b/workdir/shaders/autogen/DDGIProbeSelectData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/DDGIProbeTraceData.h b/workdir/shaders/autogen/DDGIProbeTraceData.h index 784ec2469..9043a1763 100644 --- a/workdir/shaders/autogen/DDGIProbeTraceData.h +++ b/workdir/shaders/autogen/DDGIProbeTraceData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DebugInfo.h b/workdir/shaders/autogen/DebugInfo.h index aef712650..32b857ec1 100644 --- a/workdir/shaders/autogen/DebugInfo.h +++ b/workdir/shaders/autogen/DebugInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_3 #define SLOT_3 diff --git a/workdir/shaders/autogen/DenoiserShadow_Filter.h b/workdir/shaders/autogen/DenoiserShadow_Filter.h index 455841f99..3f916c7bf 100644 --- a/workdir/shaders/autogen/DenoiserShadow_Filter.h +++ b/workdir/shaders/autogen/DenoiserShadow_Filter.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DenoiserShadow_FilterLast.h b/workdir/shaders/autogen/DenoiserShadow_FilterLast.h index 73b015b6c..e35ea5840 100644 --- a/workdir/shaders/autogen/DenoiserShadow_FilterLast.h +++ b/workdir/shaders/autogen/DenoiserShadow_FilterLast.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/DenoiserShadow_FilterLocal.h b/workdir/shaders/autogen/DenoiserShadow_FilterLocal.h index e51e51ff1..f87a070a5 100644 --- a/workdir/shaders/autogen/DenoiserShadow_FilterLocal.h +++ b/workdir/shaders/autogen/DenoiserShadow_FilterLocal.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/DenoiserShadow_Prepare.h b/workdir/shaders/autogen/DenoiserShadow_Prepare.h index e805b6826..e43585ff8 100644 --- a/workdir/shaders/autogen/DenoiserShadow_Prepare.h +++ b/workdir/shaders/autogen/DenoiserShadow_Prepare.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DenoiserShadow_TileClassification.h b/workdir/shaders/autogen/DenoiserShadow_TileClassification.h index 0de4a42ea..e36f69163 100644 --- a/workdir/shaders/autogen/DenoiserShadow_TileClassification.h +++ b/workdir/shaders/autogen/DenoiserShadow_TileClassification.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DispatchParameters.h b/workdir/shaders/autogen/DispatchParameters.h index 31dfc0eae..ce7c537b2 100644 --- a/workdir/shaders/autogen/DispatchParameters.h +++ b/workdir/shaders/autogen/DispatchParameters.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/DispatchRaysArgsBuildData.h b/workdir/shaders/autogen/DispatchRaysArgsBuildData.h index 6a6d17dbd..2b61658ef 100644 --- a/workdir/shaders/autogen/DispatchRaysArgsBuildData.h +++ b/workdir/shaders/autogen/DispatchRaysArgsBuildData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DownsampleDepth.h b/workdir/shaders/autogen/DownsampleDepth.h index 91eddd65d..18e7dd650 100644 --- a/workdir/shaders/autogen/DownsampleDepth.h +++ b/workdir/shaders/autogen/DownsampleDepth.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DownsampleDepthMip.h b/workdir/shaders/autogen/DownsampleDepthMip.h index d2fb5f095..d3f37a00a 100644 --- a/workdir/shaders/autogen/DownsampleDepthMip.h +++ b/workdir/shaders/autogen/DownsampleDepthMip.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/DrawBoxes.h b/workdir/shaders/autogen/DrawBoxes.h index f81e3921f..884c3fdd5 100644 --- a/workdir/shaders/autogen/DrawBoxes.h +++ b/workdir/shaders/autogen/DrawBoxes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/DrawStencil.h b/workdir/shaders/autogen/DrawStencil.h index 9298c21b7..a84f862d0 100644 --- a/workdir/shaders/autogen/DrawStencil.h +++ b/workdir/shaders/autogen/DrawStencil.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_9 #define SLOT_9 diff --git a/workdir/shaders/autogen/EnvFilter.h b/workdir/shaders/autogen/EnvFilter.h index a3b51ea16..19713f562 100644 --- a/workdir/shaders/autogen/EnvFilter.h +++ b/workdir/shaders/autogen/EnvFilter.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/EnvSource.h b/workdir/shaders/autogen/EnvSource.h index 9bbc2b1e0..8eed8e9e0 100644 --- a/workdir/shaders/autogen/EnvSource.h +++ b/workdir/shaders/autogen/EnvSource.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/FSR.h b/workdir/shaders/autogen/FSR.h index 4b0bfa9a2..be6247c50 100644 --- a/workdir/shaders/autogen/FSR.h +++ b/workdir/shaders/autogen/FSR.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/FlowGraph.h b/workdir/shaders/autogen/FlowGraph.h index b36fe3e45..d863d1270 100644 --- a/workdir/shaders/autogen/FlowGraph.h +++ b/workdir/shaders/autogen/FlowGraph.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/FontRendering.h b/workdir/shaders/autogen/FontRendering.h index e7b5666c4..e4a6cddbb 100644 --- a/workdir/shaders/autogen/FontRendering.h +++ b/workdir/shaders/autogen/FontRendering.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/FontRenderingConstants.h b/workdir/shaders/autogen/FontRenderingConstants.h index 3878ec42e..0fb8b5acb 100644 --- a/workdir/shaders/autogen/FontRenderingConstants.h +++ b/workdir/shaders/autogen/FontRenderingConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/FontRenderingGlyphs.h b/workdir/shaders/autogen/FontRenderingGlyphs.h index a66922028..7bf1d201f 100644 --- a/workdir/shaders/autogen/FontRenderingGlyphs.h +++ b/workdir/shaders/autogen/FontRenderingGlyphs.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/FrameGraph_Debug_Common.h b/workdir/shaders/autogen/FrameGraph_Debug_Common.h index e4a7edee1..e29740d8d 100644 --- a/workdir/shaders/autogen/FrameGraph_Debug_Common.h +++ b/workdir/shaders/autogen/FrameGraph_Debug_Common.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/FrameGraph_Debug_Texture2D.h b/workdir/shaders/autogen/FrameGraph_Debug_Texture2D.h index 50cdf8ae1..f45942298 100644 --- a/workdir/shaders/autogen/FrameGraph_Debug_Texture2D.h +++ b/workdir/shaders/autogen/FrameGraph_Debug_Texture2D.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/FrameGraph_Debug_Texture2DArray.h b/workdir/shaders/autogen/FrameGraph_Debug_Texture2DArray.h index 0a65aed7c..d336e7930 100644 --- a/workdir/shaders/autogen/FrameGraph_Debug_Texture2DArray.h +++ b/workdir/shaders/autogen/FrameGraph_Debug_Texture2DArray.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/FrameGraph_Debug_Texture3D.h b/workdir/shaders/autogen/FrameGraph_Debug_Texture3D.h index 1124941ea..5cb29a05b 100644 --- a/workdir/shaders/autogen/FrameGraph_Debug_Texture3D.h +++ b/workdir/shaders/autogen/FrameGraph_Debug_Texture3D.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/FrameGraph_Debug_TextureCube.h b/workdir/shaders/autogen/FrameGraph_Debug_TextureCube.h index 9bea9bbaf..9e78233ad 100644 --- a/workdir/shaders/autogen/FrameGraph_Debug_TextureCube.h +++ b/workdir/shaders/autogen/FrameGraph_Debug_TextureCube.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/FrameInfo.h b/workdir/shaders/autogen/FrameInfo.h index 73698e906..4aeae3855 100644 --- a/workdir/shaders/autogen/FrameInfo.h +++ b/workdir/shaders/autogen/FrameInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_0 #define SLOT_0 diff --git a/workdir/shaders/autogen/GBuffer.h b/workdir/shaders/autogen/GBuffer.h index 2abbb3099..83215aabb 100644 --- a/workdir/shaders/autogen/GBuffer.h +++ b/workdir/shaders/autogen/GBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/GBufferQuality.h b/workdir/shaders/autogen/GBufferQuality.h index 104435c2c..9db914a82 100644 --- a/workdir/shaders/autogen/GBufferQuality.h +++ b/workdir/shaders/autogen/GBufferQuality.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/GatherBoxes.h b/workdir/shaders/autogen/GatherBoxes.h index a402787fb..57a263611 100644 --- a/workdir/shaders/autogen/GatherBoxes.h +++ b/workdir/shaders/autogen/GatherBoxes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/GatherMeshesBoxes.h b/workdir/shaders/autogen/GatherMeshesBoxes.h index 7e6153289..14df8b7b4 100644 --- a/workdir/shaders/autogen/GatherMeshesBoxes.h +++ b/workdir/shaders/autogen/GatherMeshesBoxes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/GatherPipeline.h b/workdir/shaders/autogen/GatherPipeline.h index 839610e74..23c2b2db8 100644 --- a/workdir/shaders/autogen/GatherPipeline.h +++ b/workdir/shaders/autogen/GatherPipeline.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/GatherPipelineGlobal.h b/workdir/shaders/autogen/GatherPipelineGlobal.h index 2afaeecfc..9025a8333 100644 --- a/workdir/shaders/autogen/GatherPipelineGlobal.h +++ b/workdir/shaders/autogen/GatherPipelineGlobal.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/IndirectRTXHalfGBuffer.h b/workdir/shaders/autogen/IndirectRTXHalfGBuffer.h index ee75ab6b7..8efe1271f 100644 --- a/workdir/shaders/autogen/IndirectRTXHalfGBuffer.h +++ b/workdir/shaders/autogen/IndirectRTXHalfGBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_8 #define SLOT_8 diff --git a/workdir/shaders/autogen/IndirectRTXUpscale.h b/workdir/shaders/autogen/IndirectRTXUpscale.h index 469b3d58d..2091fdbf0 100644 --- a/workdir/shaders/autogen/IndirectRTXUpscale.h +++ b/workdir/shaders/autogen/IndirectRTXUpscale.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/InitDispatch.h b/workdir/shaders/autogen/InitDispatch.h index 901b3bf6b..18dd2241d 100644 --- a/workdir/shaders/autogen/InitDispatch.h +++ b/workdir/shaders/autogen/InitDispatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/Instance.h b/workdir/shaders/autogen/Instance.h index d6a7d90d6..98173497f 100644 --- a/workdir/shaders/autogen/Instance.h +++ b/workdir/shaders/autogen/Instance.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/LineRender.h b/workdir/shaders/autogen/LineRender.h index 83739046a..b12a178b2 100644 --- a/workdir/shaders/autogen/LineRender.h +++ b/workdir/shaders/autogen/LineRender.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/MaterialInfo.h b/workdir/shaders/autogen/MaterialInfo.h index 1fafe01bc..39a420106 100644 --- a/workdir/shaders/autogen/MaterialInfo.h +++ b/workdir/shaders/autogen/MaterialInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_11 #define SLOT_11 diff --git a/workdir/shaders/autogen/MaterialPreviewInfo.h b/workdir/shaders/autogen/MaterialPreviewInfo.h index a83ba1997..4c58a7111 100644 --- a/workdir/shaders/autogen/MaterialPreviewInfo.h +++ b/workdir/shaders/autogen/MaterialPreviewInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/MeshInfo.h b/workdir/shaders/autogen/MeshInfo.h index 228c25dbd..5ba9bb278 100644 --- a/workdir/shaders/autogen/MeshInfo.h +++ b/workdir/shaders/autogen/MeshInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/MeshInstanceInfo.h b/workdir/shaders/autogen/MeshInstanceInfo.h index 3dbfef68c..95ebb9785 100644 --- a/workdir/shaders/autogen/MeshInstanceInfo.h +++ b/workdir/shaders/autogen/MeshInstanceInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/MipMapping.h b/workdir/shaders/autogen/MipMapping.h index 69819ea59..b0048cc38 100644 --- a/workdir/shaders/autogen/MipMapping.h +++ b/workdir/shaders/autogen/MipMapping.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/NRD_GBufferPackParams.h b/workdir/shaders/autogen/NRD_GBufferPackParams.h index 3555b89d9..ecd045ef7 100644 --- a/workdir/shaders/autogen/NRD_GBufferPackParams.h +++ b/workdir/shaders/autogen/NRD_GBufferPackParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/NRD_IndirectCombineParams.h b/workdir/shaders/autogen/NRD_IndirectCombineParams.h index 282bbe611..0fa740685 100644 --- a/workdir/shaders/autogen/NRD_IndirectCombineParams.h +++ b/workdir/shaders/autogen/NRD_IndirectCombineParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/NRD_ShadowCombineParams.h b/workdir/shaders/autogen/NRD_ShadowCombineParams.h index 570b86cbd..53c286274 100644 --- a/workdir/shaders/autogen/NRD_ShadowCombineParams.h +++ b/workdir/shaders/autogen/NRD_ShadowCombineParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/NRD_UnpackDebugParams.h b/workdir/shaders/autogen/NRD_UnpackDebugParams.h index 6e6ae37ee..47259626f 100644 --- a/workdir/shaders/autogen/NRD_UnpackDebugParams.h +++ b/workdir/shaders/autogen/NRD_UnpackDebugParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/NinePatch.h b/workdir/shaders/autogen/NinePatch.h index 71bf3a42e..be997eaa3 100644 --- a/workdir/shaders/autogen/NinePatch.h +++ b/workdir/shaders/autogen/NinePatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/NormalRoughnessRepackParams.h b/workdir/shaders/autogen/NormalRoughnessRepackParams.h index 908e02067..ee315dcef 100644 --- a/workdir/shaders/autogen/NormalRoughnessRepackParams.h +++ b/workdir/shaders/autogen/NormalRoughnessRepackParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/PSSMConstants.h b/workdir/shaders/autogen/PSSMConstants.h index 827d2969b..1af6c2371 100644 --- a/workdir/shaders/autogen/PSSMConstants.h +++ b/workdir/shaders/autogen/PSSMConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/PSSMData.h b/workdir/shaders/autogen/PSSMData.h index b4322645a..0991d30b1 100644 --- a/workdir/shaders/autogen/PSSMData.h +++ b/workdir/shaders/autogen/PSSMData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/PSSMDataGlobal.h b/workdir/shaders/autogen/PSSMDataGlobal.h index 46dd534fb..6eae4fea9 100644 --- a/workdir/shaders/autogen/PSSMDataGlobal.h +++ b/workdir/shaders/autogen/PSSMDataGlobal.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/PSSMLighting.h b/workdir/shaders/autogen/PSSMLighting.h index 8ba45a364..3eebeb7cb 100644 --- a/workdir/shaders/autogen/PSSMLighting.h +++ b/workdir/shaders/autogen/PSSMLighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/PickerBuffer.h b/workdir/shaders/autogen/PickerBuffer.h index af422a3cd..39867270d 100644 --- a/workdir/shaders/autogen/PickerBuffer.h +++ b/workdir/shaders/autogen/PickerBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/REBLUR_BlurResources.h b/workdir/shaders/autogen/REBLUR_BlurResources.h index 7c7cd5f4f..9bf742ade 100644 --- a/workdir/shaders/autogen/REBLUR_BlurResources.h +++ b/workdir/shaders/autogen/REBLUR_BlurResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_BlurSpecularResources.h b/workdir/shaders/autogen/REBLUR_BlurSpecularResources.h index 0627b783b..1c5f42fba 100644 --- a/workdir/shaders/autogen/REBLUR_BlurSpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_BlurSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_ClassifyTilesResources.h b/workdir/shaders/autogen/REBLUR_ClassifyTilesResources.h index d524c836b..7803bc9dd 100644 --- a/workdir/shaders/autogen/REBLUR_ClassifyTilesResources.h +++ b/workdir/shaders/autogen/REBLUR_ClassifyTilesResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_HistoryFixResources.h b/workdir/shaders/autogen/REBLUR_HistoryFixResources.h index 616421759..fdf90ccbe 100644 --- a/workdir/shaders/autogen/REBLUR_HistoryFixResources.h +++ b/workdir/shaders/autogen/REBLUR_HistoryFixResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_HistoryFixSpecularResources.h b/workdir/shaders/autogen/REBLUR_HistoryFixSpecularResources.h index d9de88923..600059821 100644 --- a/workdir/shaders/autogen/REBLUR_HistoryFixSpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_HistoryFixSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_HitDistReconstructionResources.h b/workdir/shaders/autogen/REBLUR_HitDistReconstructionResources.h index 3d6349735..93518b384 100644 --- a/workdir/shaders/autogen/REBLUR_HitDistReconstructionResources.h +++ b/workdir/shaders/autogen/REBLUR_HitDistReconstructionResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_HitDistReconstructionSpecularResources.h b/workdir/shaders/autogen/REBLUR_HitDistReconstructionSpecularResources.h index 473f44465..c63a1f62f 100644 --- a/workdir/shaders/autogen/REBLUR_HitDistReconstructionSpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_HitDistReconstructionSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_PostBlurTS0Resources.h b/workdir/shaders/autogen/REBLUR_PostBlurTS0Resources.h index 9c749a0a3..3c0b05853 100644 --- a/workdir/shaders/autogen/REBLUR_PostBlurTS0Resources.h +++ b/workdir/shaders/autogen/REBLUR_PostBlurTS0Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_PostBlurTS0SpecularResources.h b/workdir/shaders/autogen/REBLUR_PostBlurTS0SpecularResources.h index 96bec5388..548f3c2c9 100644 --- a/workdir/shaders/autogen/REBLUR_PostBlurTS0SpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_PostBlurTS0SpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_PostBlurTS1Resources.h b/workdir/shaders/autogen/REBLUR_PostBlurTS1Resources.h index 3a12ea163..d8660f8a2 100644 --- a/workdir/shaders/autogen/REBLUR_PostBlurTS1Resources.h +++ b/workdir/shaders/autogen/REBLUR_PostBlurTS1Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_PostBlurTS1SpecularResources.h b/workdir/shaders/autogen/REBLUR_PostBlurTS1SpecularResources.h index 11705e72c..6952e7373 100644 --- a/workdir/shaders/autogen/REBLUR_PostBlurTS1SpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_PostBlurTS1SpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_PrePassResources.h b/workdir/shaders/autogen/REBLUR_PrePassResources.h index cb25711e3..a8559d848 100644 --- a/workdir/shaders/autogen/REBLUR_PrePassResources.h +++ b/workdir/shaders/autogen/REBLUR_PrePassResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_PrePassSpecularResources.h b/workdir/shaders/autogen/REBLUR_PrePassSpecularResources.h index 5ce8e96ce..8f2e2244a 100644 --- a/workdir/shaders/autogen/REBLUR_PrePassSpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_PrePassSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_SplitScreenResources.h b/workdir/shaders/autogen/REBLUR_SplitScreenResources.h index e96180efe..401066a1f 100644 --- a/workdir/shaders/autogen/REBLUR_SplitScreenResources.h +++ b/workdir/shaders/autogen/REBLUR_SplitScreenResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_TemporalAccumulationResources.h b/workdir/shaders/autogen/REBLUR_TemporalAccumulationResources.h index abf8c8982..bb363aaa9 100644 --- a/workdir/shaders/autogen/REBLUR_TemporalAccumulationResources.h +++ b/workdir/shaders/autogen/REBLUR_TemporalAccumulationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_TemporalAccumulationSpecularResources.h b/workdir/shaders/autogen/REBLUR_TemporalAccumulationSpecularResources.h index 2b4fbf71f..228f87102 100644 --- a/workdir/shaders/autogen/REBLUR_TemporalAccumulationSpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_TemporalAccumulationSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_TemporalStabilizationResources.h b/workdir/shaders/autogen/REBLUR_TemporalStabilizationResources.h index 8ed08a49c..2b5986579 100644 --- a/workdir/shaders/autogen/REBLUR_TemporalStabilizationResources.h +++ b/workdir/shaders/autogen/REBLUR_TemporalStabilizationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_TemporalStabilizationSpecularResources.h b/workdir/shaders/autogen/REBLUR_TemporalStabilizationSpecularResources.h index 9789d03de..d2296ac1b 100644 --- a/workdir/shaders/autogen/REBLUR_TemporalStabilizationSpecularResources.h +++ b/workdir/shaders/autogen/REBLUR_TemporalStabilizationSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/REBLUR_ValidationResources.h b/workdir/shaders/autogen/REBLUR_ValidationResources.h index 72d0ee733..e00909daa 100644 --- a/workdir/shaders/autogen/REBLUR_ValidationResources.h +++ b/workdir/shaders/autogen/REBLUR_ValidationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/RTXCombine.h b/workdir/shaders/autogen/RTXCombine.h index 346f81841..c7a42564e 100644 --- a/workdir/shaders/autogen/RTXCombine.h +++ b/workdir/shaders/autogen/RTXCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/RTXShadowReference.h b/workdir/shaders/autogen/RTXShadowReference.h index 4eb4c4ae6..adfda5153 100644 --- a/workdir/shaders/autogen/RTXShadowReference.h +++ b/workdir/shaders/autogen/RTXShadowReference.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/Raytracing.h b/workdir/shaders/autogen/Raytracing.h index 4e90b51ba..fb95ad383 100644 --- a/workdir/shaders/autogen/Raytracing.h +++ b/workdir/shaders/autogen/Raytracing.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_10 #define SLOT_10 diff --git a/workdir/shaders/autogen/RaytracingRays.h b/workdir/shaders/autogen/RaytracingRays.h index 4c52df86d..c43fe5874 100644 --- a/workdir/shaders/autogen/RaytracingRays.h +++ b/workdir/shaders/autogen/RaytracingRays.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/ReflectionCombine.h b/workdir/shaders/autogen/ReflectionCombine.h index c732ff51b..88e9b8989 100644 --- a/workdir/shaders/autogen/ReflectionCombine.h +++ b/workdir/shaders/autogen/ReflectionCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/ReflectionRTXUpscale.h b/workdir/shaders/autogen/ReflectionRTXUpscale.h index eaea61660..059c6b7fd 100644 --- a/workdir/shaders/autogen/ReflectionRTXUpscale.h +++ b/workdir/shaders/autogen/ReflectionRTXUpscale.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_9 #define SLOT_9 diff --git a/workdir/shaders/autogen/SIGMA_BlurFirstPass0Resources.h b/workdir/shaders/autogen/SIGMA_BlurFirstPass0Resources.h index d09076261..195042e62 100644 --- a/workdir/shaders/autogen/SIGMA_BlurFirstPass0Resources.h +++ b/workdir/shaders/autogen/SIGMA_BlurFirstPass0Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SIGMA_BlurFirstPass1Resources.h b/workdir/shaders/autogen/SIGMA_BlurFirstPass1Resources.h index adc5ca625..bf4430db6 100644 --- a/workdir/shaders/autogen/SIGMA_BlurFirstPass1Resources.h +++ b/workdir/shaders/autogen/SIGMA_BlurFirstPass1Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SIGMA_ClassifyTilesResources.h b/workdir/shaders/autogen/SIGMA_ClassifyTilesResources.h index a7c187c07..199c39fff 100644 --- a/workdir/shaders/autogen/SIGMA_ClassifyTilesResources.h +++ b/workdir/shaders/autogen/SIGMA_ClassifyTilesResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SIGMA_CopyResources.h b/workdir/shaders/autogen/SIGMA_CopyResources.h index 9d2f8dc52..e7c337afc 100644 --- a/workdir/shaders/autogen/SIGMA_CopyResources.h +++ b/workdir/shaders/autogen/SIGMA_CopyResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SIGMA_SmoothTilesResources.h b/workdir/shaders/autogen/SIGMA_SmoothTilesResources.h index 494c3d32f..9e5270c0e 100644 --- a/workdir/shaders/autogen/SIGMA_SmoothTilesResources.h +++ b/workdir/shaders/autogen/SIGMA_SmoothTilesResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SIGMA_SplitScreenResources.h b/workdir/shaders/autogen/SIGMA_SplitScreenResources.h index 7cc60a143..689bbe2da 100644 --- a/workdir/shaders/autogen/SIGMA_SplitScreenResources.h +++ b/workdir/shaders/autogen/SIGMA_SplitScreenResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SIGMA_TemporalStabilizationResources.h b/workdir/shaders/autogen/SIGMA_TemporalStabilizationResources.h index 92cfdd4ac..522ae6d90 100644 --- a/workdir/shaders/autogen/SIGMA_TemporalStabilizationResources.h +++ b/workdir/shaders/autogen/SIGMA_TemporalStabilizationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/SMAA_Blend.h b/workdir/shaders/autogen/SMAA_Blend.h index 3c334c426..88b923f46 100644 --- a/workdir/shaders/autogen/SMAA_Blend.h +++ b/workdir/shaders/autogen/SMAA_Blend.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/SMAA_Global.h b/workdir/shaders/autogen/SMAA_Global.h index 197d61b0b..c68c9f7ac 100644 --- a/workdir/shaders/autogen/SMAA_Global.h +++ b/workdir/shaders/autogen/SMAA_Global.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/SMAA_Weights.h b/workdir/shaders/autogen/SMAA_Weights.h index bc4e48fd3..0c9bedfe1 100644 --- a/workdir/shaders/autogen/SMAA_Weights.h +++ b/workdir/shaders/autogen/SMAA_Weights.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/SceneData.h b/workdir/shaders/autogen/SceneData.h index 06a09e4b2..70d7b21e7 100644 --- a/workdir/shaders/autogen/SceneData.h +++ b/workdir/shaders/autogen/SceneData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_1 #define SLOT_1 diff --git a/workdir/shaders/autogen/SkyData.h b/workdir/shaders/autogen/SkyData.h index f95efd097..867121d38 100644 --- a/workdir/shaders/autogen/SkyData.h +++ b/workdir/shaders/autogen/SkyData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/SkyFace.h b/workdir/shaders/autogen/SkyFace.h index 8560ae74c..a78a172fd 100644 --- a/workdir/shaders/autogen/SkyFace.h +++ b/workdir/shaders/autogen/SkyFace.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/StatGraph.h b/workdir/shaders/autogen/StatGraph.h index ef294f4dd..d881dbf01 100644 --- a/workdir/shaders/autogen/StatGraph.h +++ b/workdir/shaders/autogen/StatGraph.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/StatGraphLine.h b/workdir/shaders/autogen/StatGraphLine.h index 9e19d6bab..6cc6fc779 100644 --- a/workdir/shaders/autogen/StatGraphLine.h +++ b/workdir/shaders/autogen/StatGraphLine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/Test.h b/workdir/shaders/autogen/Test.h index b1cc65254..56c5f4590 100644 --- a/workdir/shaders/autogen/Test.h +++ b/workdir/shaders/autogen/Test.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/TextureRenderer.h b/workdir/shaders/autogen/TextureRenderer.h index 32563694d..73d1c15eb 100644 --- a/workdir/shaders/autogen/TextureRenderer.h +++ b/workdir/shaders/autogen/TextureRenderer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/TileClassifyData.h b/workdir/shaders/autogen/TileClassifyData.h index af6002d02..9ea70b9ef 100644 --- a/workdir/shaders/autogen/TileClassifyData.h +++ b/workdir/shaders/autogen/TileClassifyData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMBlockerSearchOutput.h b/workdir/shaders/autogen/VSMBlockerSearchOutput.h index aad1983be..1e1ed9b36 100644 --- a/workdir/shaders/autogen/VSMBlockerSearchOutput.h +++ b/workdir/shaders/autogen/VSMBlockerSearchOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/VSMBlockerTilesAppend.h b/workdir/shaders/autogen/VSMBlockerTilesAppend.h index f91f3f889..c29e3a3c3 100644 --- a/workdir/shaders/autogen/VSMBlockerTilesAppend.h +++ b/workdir/shaders/autogen/VSMBlockerTilesAppend.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VSMConstants.h b/workdir/shaders/autogen/VSMConstants.h index bece4a5ab..4f1cb6dd9 100644 --- a/workdir/shaders/autogen/VSMConstants.h +++ b/workdir/shaders/autogen/VSMConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMCopyPageDepth.h b/workdir/shaders/autogen/VSMCopyPageDepth.h index f2c2f0c6b..eaf65b8d9 100644 --- a/workdir/shaders/autogen/VSMCopyPageDepth.h +++ b/workdir/shaders/autogen/VSMCopyPageDepth.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMCopyPageDepthBatch.h b/workdir/shaders/autogen/VSMCopyPageDepthBatch.h index 3ad476d68..1b6a32961 100644 --- a/workdir/shaders/autogen/VSMCopyPageDepthBatch.h +++ b/workdir/shaders/autogen/VSMCopyPageDepthBatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMDepthAnalysis.h b/workdir/shaders/autogen/VSMDepthAnalysis.h index da5a5954e..f8989ab95 100644 --- a/workdir/shaders/autogen/VSMDepthAnalysis.h +++ b/workdir/shaders/autogen/VSMDepthAnalysis.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMDownsampleHiZBatch.h b/workdir/shaders/autogen/VSMDownsampleHiZBatch.h index 6d00f129a..79b212542 100644 --- a/workdir/shaders/autogen/VSMDownsampleHiZBatch.h +++ b/workdir/shaders/autogen/VSMDownsampleHiZBatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMGatherDispatchData.h b/workdir/shaders/autogen/VSMGatherDispatchData.h index 53dae5e5f..9f0eeca63 100644 --- a/workdir/shaders/autogen/VSMGatherDispatchData.h +++ b/workdir/shaders/autogen/VSMGatherDispatchData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VSMGatherDispatchMaterialData.h b/workdir/shaders/autogen/VSMGatherDispatchMaterialData.h index a6a72f94c..6e759ee46 100644 --- a/workdir/shaders/autogen/VSMGatherDispatchMaterialData.h +++ b/workdir/shaders/autogen/VSMGatherDispatchMaterialData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VSMLighting.h b/workdir/shaders/autogen/VSMLighting.h index 03ecc52e7..b08ce55b6 100644 --- a/workdir/shaders/autogen/VSMLighting.h +++ b/workdir/shaders/autogen/VSMLighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/VSMPageBatch.h b/workdir/shaders/autogen/VSMPageBatch.h index dc42d2412..d17cbe08e 100644 --- a/workdir/shaders/autogen/VSMPageBatch.h +++ b/workdir/shaders/autogen/VSMPageBatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMPageHiZ.h b/workdir/shaders/autogen/VSMPageHiZ.h index 22a80efa8..6f26363f9 100644 --- a/workdir/shaders/autogen/VSMPageHiZ.h +++ b/workdir/shaders/autogen/VSMPageHiZ.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_8 #define SLOT_8 diff --git a/workdir/shaders/autogen/VSMPageTableData.h b/workdir/shaders/autogen/VSMPageTableData.h index 67a84c2a4..8cb5dc7e8 100644 --- a/workdir/shaders/autogen/VSMPageTableData.h +++ b/workdir/shaders/autogen/VSMPageTableData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/VSMScreenSpaceShadowParams.h b/workdir/shaders/autogen/VSMScreenSpaceShadowParams.h index e4f6de3e8..5666db9db 100644 --- a/workdir/shaders/autogen/VSMScreenSpaceShadowParams.h +++ b/workdir/shaders/autogen/VSMScreenSpaceShadowParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VSMSearchVerdictAppend.h b/workdir/shaders/autogen/VSMSearchVerdictAppend.h index df49868fd..faa79b998 100644 --- a/workdir/shaders/autogen/VSMSearchVerdictAppend.h +++ b/workdir/shaders/autogen/VSMSearchVerdictAppend.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_9 #define SLOT_9 diff --git a/workdir/shaders/autogen/VSMShadowLookupData.h b/workdir/shaders/autogen/VSMShadowLookupData.h index 0a4c7d23e..5cc55ab33 100644 --- a/workdir/shaders/autogen/VSMShadowLookupData.h +++ b/workdir/shaders/autogen/VSMShadowLookupData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_14 #define SLOT_14 diff --git a/workdir/shaders/autogen/VSMShadowResolveIO.h b/workdir/shaders/autogen/VSMShadowResolveIO.h index 14bd2cd18..96ccd0900 100644 --- a/workdir/shaders/autogen/VSMShadowResolveIO.h +++ b/workdir/shaders/autogen/VSMShadowResolveIO.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/VSMTileListRead.h b/workdir/shaders/autogen/VSMTileListRead.h index 6f6c5ac11..409c16c5a 100644 --- a/workdir/shaders/autogen/VSMTileListRead.h +++ b/workdir/shaders/autogen/VSMTileListRead.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelCopy.h b/workdir/shaders/autogen/VoxelCopy.h index 00a944d90..768ca3ae6 100644 --- a/workdir/shaders/autogen/VoxelCopy.h +++ b/workdir/shaders/autogen/VoxelCopy.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelDebug.h b/workdir/shaders/autogen/VoxelDebug.h index 6c7fc86fb..3df614b05 100644 --- a/workdir/shaders/autogen/VoxelDebug.h +++ b/workdir/shaders/autogen/VoxelDebug.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelInfo.h b/workdir/shaders/autogen/VoxelInfo.h index cc02780dd..11c4e5493 100644 --- a/workdir/shaders/autogen/VoxelInfo.h +++ b/workdir/shaders/autogen/VoxelInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/VoxelLighting.h b/workdir/shaders/autogen/VoxelLighting.h index c5a48408f..afb50b5d9 100644 --- a/workdir/shaders/autogen/VoxelLighting.h +++ b/workdir/shaders/autogen/VoxelLighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelMipMap.h b/workdir/shaders/autogen/VoxelMipMap.h index 8a494b24b..3b00c36d4 100644 --- a/workdir/shaders/autogen/VoxelMipMap.h +++ b/workdir/shaders/autogen/VoxelMipMap.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelOutput.h b/workdir/shaders/autogen/VoxelOutput.h index bf3504196..aab5a2c0f 100644 --- a/workdir/shaders/autogen/VoxelOutput.h +++ b/workdir/shaders/autogen/VoxelOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/VoxelScreen.h b/workdir/shaders/autogen/VoxelScreen.h index a28f9ca01..36233b7ef 100644 --- a/workdir/shaders/autogen/VoxelScreen.h +++ b/workdir/shaders/autogen/VoxelScreen.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelUpscale.h b/workdir/shaders/autogen/VoxelUpscale.h index e8ae8bcf5..b6617a376 100644 --- a/workdir/shaders/autogen/VoxelUpscale.h +++ b/workdir/shaders/autogen/VoxelUpscale.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_6 #define SLOT_6 diff --git a/workdir/shaders/autogen/VoxelVisibility.h b/workdir/shaders/autogen/VoxelVisibility.h index 916cca04e..cd3c66fb0 100644 --- a/workdir/shaders/autogen/VoxelVisibility.h +++ b/workdir/shaders/autogen/VoxelVisibility.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/VoxelZero.h b/workdir/shaders/autogen/VoxelZero.h index 7e66f627f..e61e5c425 100644 --- a/workdir/shaders/autogen/VoxelZero.h +++ b/workdir/shaders/autogen/VoxelZero.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_5 #define SLOT_5 diff --git a/workdir/shaders/autogen/Voxelization.h b/workdir/shaders/autogen/Voxelization.h index d500d7ec2..b53d7f69f 100644 --- a/workdir/shaders/autogen/Voxelization.h +++ b/workdir/shaders/autogen/Voxelization.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_7 #define SLOT_7 diff --git a/workdir/shaders/autogen/WorkGR_ClassifyPixels_NodeEmulation.h b/workdir/shaders/autogen/WorkGR_ClassifyPixels_NodeEmulation.h index 3a27d598a..dd6fd733c 100644 --- a/workdir/shaders/autogen/WorkGR_ClassifyPixels_NodeEmulation.h +++ b/workdir/shaders/autogen/WorkGR_ClassifyPixels_NodeEmulation.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_12 #define SLOT_12 diff --git a/workdir/shaders/autogen/WorkGR_Shadows_NodeEmulation.h b/workdir/shaders/autogen/WorkGR_Shadows_NodeEmulation.h index 9202e1f5f..231511479 100644 --- a/workdir/shaders/autogen/WorkGR_Shadows_NodeEmulation.h +++ b/workdir/shaders/autogen/WorkGR_Shadows_NodeEmulation.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_13 #define SLOT_13 diff --git a/workdir/shaders/autogen/WorkGraphTest.h b/workdir/shaders/autogen/WorkGraphTest.h index 06fe7c82c..03f57a654 100644 --- a/workdir/shaders/autogen/WorkGraphTest.h +++ b/workdir/shaders/autogen/WorkGraphTest.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SLOT_4 #define SLOT_4 diff --git a/workdir/shaders/autogen/layout/DefaultLayout.h b/workdir/shaders/autogen/layout/DefaultLayout.h index b644a3402..7396c4491 100644 --- a/workdir/shaders/autogen/layout/DefaultLayout.h +++ b/workdir/shaders/autogen/layout/DefaultLayout.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef HAL_LAYOUT_DEFAULTLAYOUT_H #define HAL_LAYOUT_DEFAULTLAYOUT_H diff --git a/workdir/shaders/autogen/layout/FrameLayout.h b/workdir/shaders/autogen/layout/FrameLayout.h index 161241864..9b96257f9 100644 --- a/workdir/shaders/autogen/layout/FrameLayout.h +++ b/workdir/shaders/autogen/layout/FrameLayout.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef HAL_LAYOUT_FRAMELAYOUT_H #define HAL_LAYOUT_FRAMELAYOUT_H diff --git a/workdir/shaders/autogen/layout/NoneLayout.h b/workdir/shaders/autogen/layout/NoneLayout.h index 03af282e4..07250f870 100644 --- a/workdir/shaders/autogen/layout/NoneLayout.h +++ b/workdir/shaders/autogen/layout/NoneLayout.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef HAL_LAYOUT_NONELAYOUT_H #define HAL_LAYOUT_NONELAYOUT_H diff --git a/workdir/shaders/autogen/rt/DepthOnly.h b/workdir/shaders/autogen/rt/DepthOnly.h index a7cbe99a5..ada73a9d1 100644 --- a/workdir/shaders/autogen/rt/DepthOnly.h +++ b/workdir/shaders/autogen/rt/DepthOnly.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/workdir/shaders/autogen/rt/GBuffer.h b/workdir/shaders/autogen/rt/GBuffer.h index 9632790a2..70192508f 100644 --- a/workdir/shaders/autogen/rt/GBuffer.h +++ b/workdir/shaders/autogen/rt/GBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/workdir/shaders/autogen/rt/NoOutput.h b/workdir/shaders/autogen/rt/NoOutput.h index 7001b3801..6391ec628 100644 --- a/workdir/shaders/autogen/rt/NoOutput.h +++ b/workdir/shaders/autogen/rt/NoOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/workdir/shaders/autogen/rt/SingleColor.h b/workdir/shaders/autogen/rt/SingleColor.h index c5d2c2b42..0b46ea9b2 100644 --- a/workdir/shaders/autogen/rt/SingleColor.h +++ b/workdir/shaders/autogen/rt/SingleColor.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/workdir/shaders/autogen/rt/SingleColorDepth.h b/workdir/shaders/autogen/rt/SingleColorDepth.h index 15274351d..aabb9bec2 100644 --- a/workdir/shaders/autogen/rt/SingleColorDepth.h +++ b/workdir/shaders/autogen/rt/SingleColorDepth.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/workdir/shaders/autogen/rtx/ColorPass.h b/workdir/shaders/autogen/rtx/ColorPass.h index 785b7bf68..321c54095 100644 --- a/workdir/shaders/autogen/rtx/ColorPass.h +++ b/workdir/shaders/autogen/rtx/ColorPass.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ void ColorPass(RaytracingAccelerationStructure scene, RayDesc ray, RAY_FLAG flag, inout RayPayload payload) diff --git a/workdir/shaders/autogen/rtx/ColorShadowPass.h b/workdir/shaders/autogen/rtx/ColorShadowPass.h index add3b99ab..816fb8e84 100644 --- a/workdir/shaders/autogen/rtx/ColorShadowPass.h +++ b/workdir/shaders/autogen/rtx/ColorShadowPass.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ void ColorShadowPass(RaytracingAccelerationStructure scene, RayDesc ray, RAY_FLAG flag, inout ColorShadowPayload payload) diff --git a/workdir/shaders/autogen/rtx/ShadowPass.h b/workdir/shaders/autogen/rtx/ShadowPass.h index 7afa0f545..8dd622f47 100644 --- a/workdir/shaders/autogen/rtx/ShadowPass.h +++ b/workdir/shaders/autogen/rtx/ShadowPass.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ void ShadowPass(RaytracingAccelerationStructure scene, RayDesc ray, RAY_FLAG flag, inout ShadowPayload payload) diff --git a/workdir/shaders/autogen/tables/AABB.h b/workdir/shaders/autogen/tables/AABB.h index b721cb6a6..abbbb6db2 100644 --- a/workdir/shaders/autogen/tables/AABB.h +++ b/workdir/shaders/autogen/tables/AABB.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/BRDF.h b/workdir/shaders/autogen/tables/BRDF.h index 7f9364996..4fad41cb1 100644 --- a/workdir/shaders/autogen/tables/BRDF.h +++ b/workdir/shaders/autogen/tables/BRDF.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/BlueNoise.h b/workdir/shaders/autogen/tables/BlueNoise.h index 4825b7da3..b6b16d0a2 100644 --- a/workdir/shaders/autogen/tables/BlueNoise.h +++ b/workdir/shaders/autogen/tables/BlueNoise.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/BoxInfo.h b/workdir/shaders/autogen/tables/BoxInfo.h index 5932f0f88..a9c2c0883 100644 --- a/workdir/shaders/autogen/tables/BoxInfo.h +++ b/workdir/shaders/autogen/tables/BoxInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Camera.h b/workdir/shaders/autogen/tables/Camera.h index a47206ab2..541a7a053 100644 --- a/workdir/shaders/autogen/tables/Camera.h +++ b/workdir/shaders/autogen/tables/Camera.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Clear_Constants.h b/workdir/shaders/autogen/tables/Clear_Constants.h index 4ad830b33..31239a472 100644 --- a/workdir/shaders/autogen/tables/Clear_Constants.h +++ b/workdir/shaders/autogen/tables/Clear_Constants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Clear_UInt4Resources.h b/workdir/shaders/autogen/tables/Clear_UInt4Resources.h index 40c089b57..57fa4793e 100644 --- a/workdir/shaders/autogen/tables/Clear_UInt4Resources.h +++ b/workdir/shaders/autogen/tables/Clear_UInt4Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Color.h b/workdir/shaders/autogen/tables/Color.h index afbf33417..d32cc80dd 100644 --- a/workdir/shaders/autogen/tables/Color.h +++ b/workdir/shaders/autogen/tables/Color.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ColorRTXOutput.h b/workdir/shaders/autogen/tables/ColorRTXOutput.h index 91401ab59..44dbc06a9 100644 --- a/workdir/shaders/autogen/tables/ColorRTXOutput.h +++ b/workdir/shaders/autogen/tables/ColorRTXOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ColorRect.h b/workdir/shaders/autogen/tables/ColorRect.h index 7c587ebe4..f1ec99931 100644 --- a/workdir/shaders/autogen/tables/ColorRect.h +++ b/workdir/shaders/autogen/tables/ColorRect.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ColorShadowPayload.h b/workdir/shaders/autogen/tables/ColorShadowPayload.h index 179b255ea..25b19c07f 100644 --- a/workdir/shaders/autogen/tables/ColorShadowPayload.h +++ b/workdir/shaders/autogen/tables/ColorShadowPayload.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/CommandData.h b/workdir/shaders/autogen/tables/CommandData.h index 6a4b0c905..a1ae84e9e 100644 --- a/workdir/shaders/autogen/tables/CommandData.h +++ b/workdir/shaders/autogen/tables/CommandData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/CopyTexture.h b/workdir/shaders/autogen/tables/CopyTexture.h index 9e0152852..b6d6a7b72 100644 --- a/workdir/shaders/autogen/tables/CopyTexture.h +++ b/workdir/shaders/autogen/tables/CopyTexture.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Countour.h b/workdir/shaders/autogen/tables/Countour.h index 3d73a5940..6324d49cd 100644 --- a/workdir/shaders/autogen/tables/Countour.h +++ b/workdir/shaders/autogen/tables/Countour.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIDebugData.h b/workdir/shaders/autogen/tables/DDGIDebugData.h index 5c59d85ae..de15ff090 100644 --- a/workdir/shaders/autogen/tables/DDGIDebugData.h +++ b/workdir/shaders/autogen/tables/DDGIDebugData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIIndirectDebugData.h b/workdir/shaders/autogen/tables/DDGIIndirectDebugData.h index c956488df..30387de47 100644 --- a/workdir/shaders/autogen/tables/DDGIIndirectDebugData.h +++ b/workdir/shaders/autogen/tables/DDGIIndirectDebugData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIInfo.h b/workdir/shaders/autogen/tables/DDGIInfo.h index 0f5f2f05f..9989c9c6f 100644 --- a/workdir/shaders/autogen/tables/DDGIInfo.h +++ b/workdir/shaders/autogen/tables/DDGIInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIProbeConvolveData.h b/workdir/shaders/autogen/tables/DDGIProbeConvolveData.h index d198fd649..ce68db77a 100644 --- a/workdir/shaders/autogen/tables/DDGIProbeConvolveData.h +++ b/workdir/shaders/autogen/tables/DDGIProbeConvolveData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIProbeMetadata.h b/workdir/shaders/autogen/tables/DDGIProbeMetadata.h index e312250fe..5913107fe 100644 --- a/workdir/shaders/autogen/tables/DDGIProbeMetadata.h +++ b/workdir/shaders/autogen/tables/DDGIProbeMetadata.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIProbeResidencyMarkData.h b/workdir/shaders/autogen/tables/DDGIProbeResidencyMarkData.h index d793df5ed..c8331ed89 100644 --- a/workdir/shaders/autogen/tables/DDGIProbeResidencyMarkData.h +++ b/workdir/shaders/autogen/tables/DDGIProbeResidencyMarkData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIProbeSelectData.h b/workdir/shaders/autogen/tables/DDGIProbeSelectData.h index 33bab1f42..4bfb7cb34 100644 --- a/workdir/shaders/autogen/tables/DDGIProbeSelectData.h +++ b/workdir/shaders/autogen/tables/DDGIProbeSelectData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIProbeTraceData.h b/workdir/shaders/autogen/tables/DDGIProbeTraceData.h index aee9e91c7..5d95565f4 100644 --- a/workdir/shaders/autogen/tables/DDGIProbeTraceData.h +++ b/workdir/shaders/autogen/tables/DDGIProbeTraceData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGIProbes.h b/workdir/shaders/autogen/tables/DDGIProbes.h index 1d2ea0876..e046db6cf 100644 --- a/workdir/shaders/autogen/tables/DDGIProbes.h +++ b/workdir/shaders/autogen/tables/DDGIProbes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DDGISelectors.h b/workdir/shaders/autogen/tables/DDGISelectors.h index c6a17f8cf..260ae2996 100644 --- a/workdir/shaders/autogen/tables/DDGISelectors.h +++ b/workdir/shaders/autogen/tables/DDGISelectors.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DebugInfo.h b/workdir/shaders/autogen/tables/DebugInfo.h index 71661707b..ba823d5f4 100644 --- a/workdir/shaders/autogen/tables/DebugInfo.h +++ b/workdir/shaders/autogen/tables/DebugInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DebugStruct.h b/workdir/shaders/autogen/tables/DebugStruct.h index c62750bb3..04bfed552 100644 --- a/workdir/shaders/autogen/tables/DebugStruct.h +++ b/workdir/shaders/autogen/tables/DebugStruct.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DenoiserShadow_Filter.h b/workdir/shaders/autogen/tables/DenoiserShadow_Filter.h index 78491745c..744c888db 100644 --- a/workdir/shaders/autogen/tables/DenoiserShadow_Filter.h +++ b/workdir/shaders/autogen/tables/DenoiserShadow_Filter.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DenoiserShadow_FilterLast.h b/workdir/shaders/autogen/tables/DenoiserShadow_FilterLast.h index a218ccf68..be9135719 100644 --- a/workdir/shaders/autogen/tables/DenoiserShadow_FilterLast.h +++ b/workdir/shaders/autogen/tables/DenoiserShadow_FilterLast.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DenoiserShadow_FilterLocal.h b/workdir/shaders/autogen/tables/DenoiserShadow_FilterLocal.h index 6d4fddf65..a78e9b3be 100644 --- a/workdir/shaders/autogen/tables/DenoiserShadow_FilterLocal.h +++ b/workdir/shaders/autogen/tables/DenoiserShadow_FilterLocal.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DenoiserShadow_Prepare.h b/workdir/shaders/autogen/tables/DenoiserShadow_Prepare.h index 1d280a6b8..4afd977fb 100644 --- a/workdir/shaders/autogen/tables/DenoiserShadow_Prepare.h +++ b/workdir/shaders/autogen/tables/DenoiserShadow_Prepare.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DenoiserShadow_TileClassification.h b/workdir/shaders/autogen/tables/DenoiserShadow_TileClassification.h index 82aee4f2a..36610b2b2 100644 --- a/workdir/shaders/autogen/tables/DenoiserShadow_TileClassification.h +++ b/workdir/shaders/autogen/tables/DenoiserShadow_TileClassification.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DepthOnly.h b/workdir/shaders/autogen/tables/DepthOnly.h index f31e8b3b5..e5869c2b3 100644 --- a/workdir/shaders/autogen/tables/DepthOnly.h +++ b/workdir/shaders/autogen/tables/DepthOnly.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DispatchArguments.h b/workdir/shaders/autogen/tables/DispatchArguments.h index 7edaa8640..2579fc65b 100644 --- a/workdir/shaders/autogen/tables/DispatchArguments.h +++ b/workdir/shaders/autogen/tables/DispatchArguments.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DispatchMeshArguments.h b/workdir/shaders/autogen/tables/DispatchMeshArguments.h index 02ddcd212..b3c293805 100644 --- a/workdir/shaders/autogen/tables/DispatchMeshArguments.h +++ b/workdir/shaders/autogen/tables/DispatchMeshArguments.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DispatchParameters.h b/workdir/shaders/autogen/tables/DispatchParameters.h index 0bc6980d6..a426d4074 100644 --- a/workdir/shaders/autogen/tables/DispatchParameters.h +++ b/workdir/shaders/autogen/tables/DispatchParameters.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DispatchRaysArgsBuildData.h b/workdir/shaders/autogen/tables/DispatchRaysArgsBuildData.h index c3befa768..93a6fe984 100644 --- a/workdir/shaders/autogen/tables/DispatchRaysArgsBuildData.h +++ b/workdir/shaders/autogen/tables/DispatchRaysArgsBuildData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DispatchRaysArguments.h b/workdir/shaders/autogen/tables/DispatchRaysArguments.h index 470e81b1c..dbec76d6e 100644 --- a/workdir/shaders/autogen/tables/DispatchRaysArguments.h +++ b/workdir/shaders/autogen/tables/DispatchRaysArguments.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DownsampleDepth.h b/workdir/shaders/autogen/tables/DownsampleDepth.h index 374dfa795..e233b4a5b 100644 --- a/workdir/shaders/autogen/tables/DownsampleDepth.h +++ b/workdir/shaders/autogen/tables/DownsampleDepth.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DownsampleDepthMip.h b/workdir/shaders/autogen/tables/DownsampleDepthMip.h index 471463c88..de33d4c0c 100644 --- a/workdir/shaders/autogen/tables/DownsampleDepthMip.h +++ b/workdir/shaders/autogen/tables/DownsampleDepthMip.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DrawBoxes.h b/workdir/shaders/autogen/tables/DrawBoxes.h index 18eb52824..aaaa314e8 100644 --- a/workdir/shaders/autogen/tables/DrawBoxes.h +++ b/workdir/shaders/autogen/tables/DrawBoxes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DrawIndexedArguments.h b/workdir/shaders/autogen/tables/DrawIndexedArguments.h index 3ce8789fb..7f55ff04f 100644 --- a/workdir/shaders/autogen/tables/DrawIndexedArguments.h +++ b/workdir/shaders/autogen/tables/DrawIndexedArguments.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/DrawStencil.h b/workdir/shaders/autogen/tables/DrawStencil.h index 5c20b6111..1b63794ea 100644 --- a/workdir/shaders/autogen/tables/DrawStencil.h +++ b/workdir/shaders/autogen/tables/DrawStencil.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/EnvFilter.h b/workdir/shaders/autogen/tables/EnvFilter.h index 1d250f88e..e638073aa 100644 --- a/workdir/shaders/autogen/tables/EnvFilter.h +++ b/workdir/shaders/autogen/tables/EnvFilter.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/EnvSource.h b/workdir/shaders/autogen/tables/EnvSource.h index 7293c9c52..3386b080b 100644 --- a/workdir/shaders/autogen/tables/EnvSource.h +++ b/workdir/shaders/autogen/tables/EnvSource.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FSR.h b/workdir/shaders/autogen/tables/FSR.h index fe25d2cdb..5c8f1dfaa 100644 --- a/workdir/shaders/autogen/tables/FSR.h +++ b/workdir/shaders/autogen/tables/FSR.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FSRConstants.h b/workdir/shaders/autogen/tables/FSRConstants.h index 1377b72e3..238da8a4c 100644 --- a/workdir/shaders/autogen/tables/FSRConstants.h +++ b/workdir/shaders/autogen/tables/FSRConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FlowGraph.h b/workdir/shaders/autogen/tables/FlowGraph.h index c640abd8c..9cee81e3d 100644 --- a/workdir/shaders/autogen/tables/FlowGraph.h +++ b/workdir/shaders/autogen/tables/FlowGraph.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FontRendering.h b/workdir/shaders/autogen/tables/FontRendering.h index 3bd6a3e41..a55cd500f 100644 --- a/workdir/shaders/autogen/tables/FontRendering.h +++ b/workdir/shaders/autogen/tables/FontRendering.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FontRenderingConstants.h b/workdir/shaders/autogen/tables/FontRenderingConstants.h index 12d54d071..7b6a6ca13 100644 --- a/workdir/shaders/autogen/tables/FontRenderingConstants.h +++ b/workdir/shaders/autogen/tables/FontRenderingConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FontRenderingGlyphs.h b/workdir/shaders/autogen/tables/FontRenderingGlyphs.h index 4a5dc7127..18f97dc65 100644 --- a/workdir/shaders/autogen/tables/FontRenderingGlyphs.h +++ b/workdir/shaders/autogen/tables/FontRenderingGlyphs.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FrameGraph_Debug_Common.h b/workdir/shaders/autogen/tables/FrameGraph_Debug_Common.h index 2477975cc..58d22ab0e 100644 --- a/workdir/shaders/autogen/tables/FrameGraph_Debug_Common.h +++ b/workdir/shaders/autogen/tables/FrameGraph_Debug_Common.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2D.h b/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2D.h index 4cc72232a..2318e85e3 100644 --- a/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2D.h +++ b/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2D.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2DArray.h b/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2DArray.h index 2dc473148..e2750fb1c 100644 --- a/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2DArray.h +++ b/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture2DArray.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture3D.h b/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture3D.h index 93af72dcb..648359b4d 100644 --- a/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture3D.h +++ b/workdir/shaders/autogen/tables/FrameGraph_Debug_Texture3D.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FrameGraph_Debug_TextureCube.h b/workdir/shaders/autogen/tables/FrameGraph_Debug_TextureCube.h index bbeb11c37..889f9ac86 100644 --- a/workdir/shaders/autogen/tables/FrameGraph_Debug_TextureCube.h +++ b/workdir/shaders/autogen/tables/FrameGraph_Debug_TextureCube.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/FrameInfo.h b/workdir/shaders/autogen/tables/FrameInfo.h index 6f3080cd0..140ee6ade 100644 --- a/workdir/shaders/autogen/tables/FrameInfo.h +++ b/workdir/shaders/autogen/tables/FrameInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Frustum.h b/workdir/shaders/autogen/tables/Frustum.h index 85b816f31..80b886c37 100644 --- a/workdir/shaders/autogen/tables/Frustum.h +++ b/workdir/shaders/autogen/tables/Frustum.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GBuffer.h b/workdir/shaders/autogen/tables/GBuffer.h index 638858067..18d1b5720 100644 --- a/workdir/shaders/autogen/tables/GBuffer.h +++ b/workdir/shaders/autogen/tables/GBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GBufferQuality.h b/workdir/shaders/autogen/tables/GBufferQuality.h index 22e584fc3..5ac6c673e 100644 --- a/workdir/shaders/autogen/tables/GBufferQuality.h +++ b/workdir/shaders/autogen/tables/GBufferQuality.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GPUAddress.h b/workdir/shaders/autogen/tables/GPUAddress.h index 4ec67ad3f..87e128f4c 100644 --- a/workdir/shaders/autogen/tables/GPUAddress.h +++ b/workdir/shaders/autogen/tables/GPUAddress.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GatherBoxes.h b/workdir/shaders/autogen/tables/GatherBoxes.h index fbca905db..56a16034e 100644 --- a/workdir/shaders/autogen/tables/GatherBoxes.h +++ b/workdir/shaders/autogen/tables/GatherBoxes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GatherMeshesBoxes.h b/workdir/shaders/autogen/tables/GatherMeshesBoxes.h index 6ba31607a..6b6e0d481 100644 --- a/workdir/shaders/autogen/tables/GatherMeshesBoxes.h +++ b/workdir/shaders/autogen/tables/GatherMeshesBoxes.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GatherPipeline.h b/workdir/shaders/autogen/tables/GatherPipeline.h index 0649efb18..cc0523da8 100644 --- a/workdir/shaders/autogen/tables/GatherPipeline.h +++ b/workdir/shaders/autogen/tables/GatherPipeline.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GatherPipelineGlobal.h b/workdir/shaders/autogen/tables/GatherPipelineGlobal.h index f63bd0fb0..07f0855bd 100644 --- a/workdir/shaders/autogen/tables/GatherPipelineGlobal.h +++ b/workdir/shaders/autogen/tables/GatherPipelineGlobal.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Glyph.h b/workdir/shaders/autogen/tables/Glyph.h index 6140ff0b8..bc2dd4498 100644 --- a/workdir/shaders/autogen/tables/Glyph.h +++ b/workdir/shaders/autogen/tables/Glyph.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/GraphInput.h b/workdir/shaders/autogen/tables/GraphInput.h index dc24049f0..7fe3e23fa 100644 --- a/workdir/shaders/autogen/tables/GraphInput.h +++ b/workdir/shaders/autogen/tables/GraphInput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/IndirectGISelectors.h b/workdir/shaders/autogen/tables/IndirectGISelectors.h index 3fb1f5942..2e077ecb1 100644 --- a/workdir/shaders/autogen/tables/IndirectGISelectors.h +++ b/workdir/shaders/autogen/tables/IndirectGISelectors.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/IndirectRTXHalfGBuffer.h b/workdir/shaders/autogen/tables/IndirectRTXHalfGBuffer.h index be8c8be0b..a3d19276b 100644 --- a/workdir/shaders/autogen/tables/IndirectRTXHalfGBuffer.h +++ b/workdir/shaders/autogen/tables/IndirectRTXHalfGBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/IndirectRTXUpscale.h b/workdir/shaders/autogen/tables/IndirectRTXUpscale.h index 9d1e3682a..8b8138846 100644 --- a/workdir/shaders/autogen/tables/IndirectRTXUpscale.h +++ b/workdir/shaders/autogen/tables/IndirectRTXUpscale.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/InitDispatch.h b/workdir/shaders/autogen/tables/InitDispatch.h index bd48713f8..df8492214 100644 --- a/workdir/shaders/autogen/tables/InitDispatch.h +++ b/workdir/shaders/autogen/tables/InitDispatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Instance.h b/workdir/shaders/autogen/tables/Instance.h index 30851dd68..ba96efec7 100644 --- a/workdir/shaders/autogen/tables/Instance.h +++ b/workdir/shaders/autogen/tables/Instance.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/LineRender.h b/workdir/shaders/autogen/tables/LineRender.h index 285fc5aed..6380d494f 100644 --- a/workdir/shaders/autogen/tables/LineRender.h +++ b/workdir/shaders/autogen/tables/LineRender.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MaterialCommandData.h b/workdir/shaders/autogen/tables/MaterialCommandData.h index 480d721e2..a3b475cf1 100644 --- a/workdir/shaders/autogen/tables/MaterialCommandData.h +++ b/workdir/shaders/autogen/tables/MaterialCommandData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MaterialInfo.h b/workdir/shaders/autogen/tables/MaterialInfo.h index a096a0f29..5c0dc16a6 100644 --- a/workdir/shaders/autogen/tables/MaterialInfo.h +++ b/workdir/shaders/autogen/tables/MaterialInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MaterialPreviewInfo.h b/workdir/shaders/autogen/tables/MaterialPreviewInfo.h index 39f2a5457..9b556cdd4 100644 --- a/workdir/shaders/autogen/tables/MaterialPreviewInfo.h +++ b/workdir/shaders/autogen/tables/MaterialPreviewInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MeshCommandData.h b/workdir/shaders/autogen/tables/MeshCommandData.h index 371556044..e7afcafee 100644 --- a/workdir/shaders/autogen/tables/MeshCommandData.h +++ b/workdir/shaders/autogen/tables/MeshCommandData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MeshInfo.h b/workdir/shaders/autogen/tables/MeshInfo.h index 536eea6fd..e91b74f0f 100644 --- a/workdir/shaders/autogen/tables/MeshInfo.h +++ b/workdir/shaders/autogen/tables/MeshInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MeshInstance.h b/workdir/shaders/autogen/tables/MeshInstance.h index 09fea7435..555f18ccc 100644 --- a/workdir/shaders/autogen/tables/MeshInstance.h +++ b/workdir/shaders/autogen/tables/MeshInstance.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MeshInstanceInfo.h b/workdir/shaders/autogen/tables/MeshInstanceInfo.h index 60052d440..03421cbcf 100644 --- a/workdir/shaders/autogen/tables/MeshInstanceInfo.h +++ b/workdir/shaders/autogen/tables/MeshInstanceInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Meshlet.h b/workdir/shaders/autogen/tables/Meshlet.h index 9a62dbbf0..98f01e1d4 100644 --- a/workdir/shaders/autogen/tables/Meshlet.h +++ b/workdir/shaders/autogen/tables/Meshlet.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MeshletCullData.h b/workdir/shaders/autogen/tables/MeshletCullData.h index ae09d1c20..b83bcc19b 100644 --- a/workdir/shaders/autogen/tables/MeshletCullData.h +++ b/workdir/shaders/autogen/tables/MeshletCullData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/MipMapping.h b/workdir/shaders/autogen/tables/MipMapping.h index c495b59fa..7fd2f6de1 100644 --- a/workdir/shaders/autogen/tables/MipMapping.h +++ b/workdir/shaders/autogen/tables/MipMapping.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NRD_GBufferPackParams.h b/workdir/shaders/autogen/tables/NRD_GBufferPackParams.h index fcd45a15f..3f2f91cc5 100644 --- a/workdir/shaders/autogen/tables/NRD_GBufferPackParams.h +++ b/workdir/shaders/autogen/tables/NRD_GBufferPackParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NRD_IndirectCombineParams.h b/workdir/shaders/autogen/tables/NRD_IndirectCombineParams.h index dd3b21674..cc0cf2be7 100644 --- a/workdir/shaders/autogen/tables/NRD_IndirectCombineParams.h +++ b/workdir/shaders/autogen/tables/NRD_IndirectCombineParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NRD_ShadowCombineParams.h b/workdir/shaders/autogen/tables/NRD_ShadowCombineParams.h index 054a16440..3f7172cfe 100644 --- a/workdir/shaders/autogen/tables/NRD_ShadowCombineParams.h +++ b/workdir/shaders/autogen/tables/NRD_ShadowCombineParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NRD_UnpackDebugParams.h b/workdir/shaders/autogen/tables/NRD_UnpackDebugParams.h index 932acff8e..88d8eed50 100644 --- a/workdir/shaders/autogen/tables/NRD_UnpackDebugParams.h +++ b/workdir/shaders/autogen/tables/NRD_UnpackDebugParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NinePatch.h b/workdir/shaders/autogen/tables/NinePatch.h index b93dc375b..94a70f0b3 100644 --- a/workdir/shaders/autogen/tables/NinePatch.h +++ b/workdir/shaders/autogen/tables/NinePatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NoOutput.h b/workdir/shaders/autogen/tables/NoOutput.h index ae84dabb0..197d0b8ed 100644 --- a/workdir/shaders/autogen/tables/NoOutput.h +++ b/workdir/shaders/autogen/tables/NoOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/NormalRoughnessRepackParams.h b/workdir/shaders/autogen/tables/NormalRoughnessRepackParams.h index 092db9fe2..16e0b388f 100644 --- a/workdir/shaders/autogen/tables/NormalRoughnessRepackParams.h +++ b/workdir/shaders/autogen/tables/NormalRoughnessRepackParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/PSSMConstants.h b/workdir/shaders/autogen/tables/PSSMConstants.h index 00d8beee4..b718270f6 100644 --- a/workdir/shaders/autogen/tables/PSSMConstants.h +++ b/workdir/shaders/autogen/tables/PSSMConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/PSSMData.h b/workdir/shaders/autogen/tables/PSSMData.h index 7bf5358cb..522b3fe5c 100644 --- a/workdir/shaders/autogen/tables/PSSMData.h +++ b/workdir/shaders/autogen/tables/PSSMData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/PSSMDataGlobal.h b/workdir/shaders/autogen/tables/PSSMDataGlobal.h index 44c64260e..bd3e80067 100644 --- a/workdir/shaders/autogen/tables/PSSMDataGlobal.h +++ b/workdir/shaders/autogen/tables/PSSMDataGlobal.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/PSSMLighting.h b/workdir/shaders/autogen/tables/PSSMLighting.h index ce764c72a..430d8b3c7 100644 --- a/workdir/shaders/autogen/tables/PSSMLighting.h +++ b/workdir/shaders/autogen/tables/PSSMLighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/PickerBuffer.h b/workdir/shaders/autogen/tables/PickerBuffer.h index 4adbe30f8..afdfb2d31 100644 --- a/workdir/shaders/autogen/tables/PickerBuffer.h +++ b/workdir/shaders/autogen/tables/PickerBuffer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLURSharedConstants.h b/workdir/shaders/autogen/tables/REBLURSharedConstants.h index c6967dc2d..6058b58e0 100644 --- a/workdir/shaders/autogen/tables/REBLURSharedConstants.h +++ b/workdir/shaders/autogen/tables/REBLURSharedConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_BlurResources.h b/workdir/shaders/autogen/tables/REBLUR_BlurResources.h index 09b01fe44..59dbd07ed 100644 --- a/workdir/shaders/autogen/tables/REBLUR_BlurResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_BlurResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_BlurSpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_BlurSpecularResources.h index 162bc0d44..3bbd394b4 100644 --- a/workdir/shaders/autogen/tables/REBLUR_BlurSpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_BlurSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_ClassifyTilesResources.h b/workdir/shaders/autogen/tables/REBLUR_ClassifyTilesResources.h index 6be5ea0f4..a3235e373 100644 --- a/workdir/shaders/autogen/tables/REBLUR_ClassifyTilesResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_ClassifyTilesResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_HistoryFixResources.h b/workdir/shaders/autogen/tables/REBLUR_HistoryFixResources.h index fd55f27db..99bae0fa4 100644 --- a/workdir/shaders/autogen/tables/REBLUR_HistoryFixResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_HistoryFixResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_HistoryFixSpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_HistoryFixSpecularResources.h index 80235edec..e2ea57f2b 100644 --- a/workdir/shaders/autogen/tables/REBLUR_HistoryFixSpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_HistoryFixSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionResources.h b/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionResources.h index b43f64ee2..63796cac7 100644 --- a/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionSpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionSpecularResources.h index 70034cc5d..bced85a67 100644 --- a/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionSpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_HitDistReconstructionSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0Resources.h b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0Resources.h index aca3e1619..abf33a208 100644 --- a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0Resources.h +++ b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0SpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0SpecularResources.h index 9fd32cbc2..849f3f547 100644 --- a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0SpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS0SpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1Resources.h b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1Resources.h index 8ff0a5e05..64f0bc76a 100644 --- a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1Resources.h +++ b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1SpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1SpecularResources.h index ef1b557aa..03070c414 100644 --- a/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1SpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_PostBlurTS1SpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_PrePassResources.h b/workdir/shaders/autogen/tables/REBLUR_PrePassResources.h index bbde2a761..f7f91173a 100644 --- a/workdir/shaders/autogen/tables/REBLUR_PrePassResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_PrePassResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_PrePassSpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_PrePassSpecularResources.h index 2e05ceaab..fc19446cf 100644 --- a/workdir/shaders/autogen/tables/REBLUR_PrePassSpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_PrePassSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_SplitScreenResources.h b/workdir/shaders/autogen/tables/REBLUR_SplitScreenResources.h index b2fb436bf..9c6addb86 100644 --- a/workdir/shaders/autogen/tables/REBLUR_SplitScreenResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_SplitScreenResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationResources.h b/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationResources.h index 8895b2b8f..1953396c5 100644 --- a/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationSpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationSpecularResources.h index 54c2481c9..839950e8e 100644 --- a/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationSpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_TemporalAccumulationSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationResources.h b/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationResources.h index 6182c2078..51580d4f8 100644 --- a/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationSpecularResources.h b/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationSpecularResources.h index c0fb84c3b..9c51b7c92 100644 --- a/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationSpecularResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_TemporalStabilizationSpecularResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/REBLUR_ValidationResources.h b/workdir/shaders/autogen/tables/REBLUR_ValidationResources.h index d6c98624a..371a1f88b 100644 --- a/workdir/shaders/autogen/tables/REBLUR_ValidationResources.h +++ b/workdir/shaders/autogen/tables/REBLUR_ValidationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/RTXCombine.h b/workdir/shaders/autogen/tables/RTXCombine.h index a23cff551..0ec5a8053 100644 --- a/workdir/shaders/autogen/tables/RTXCombine.h +++ b/workdir/shaders/autogen/tables/RTXCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/RTXShadowReference.h b/workdir/shaders/autogen/tables/RTXShadowReference.h index 16340fbc6..0c9f9e800 100644 --- a/workdir/shaders/autogen/tables/RTXShadowReference.h +++ b/workdir/shaders/autogen/tables/RTXShadowReference.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/RayCone.h b/workdir/shaders/autogen/tables/RayCone.h index 4437f0b34..7ca637c05 100644 --- a/workdir/shaders/autogen/tables/RayCone.h +++ b/workdir/shaders/autogen/tables/RayCone.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/RayPayload.h b/workdir/shaders/autogen/tables/RayPayload.h index d9f167dc9..c85f16a20 100644 --- a/workdir/shaders/autogen/tables/RayPayload.h +++ b/workdir/shaders/autogen/tables/RayPayload.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/RaytraceInstanceInfo.h b/workdir/shaders/autogen/tables/RaytraceInstanceInfo.h index 5a398f7de..020f7d625 100644 --- a/workdir/shaders/autogen/tables/RaytraceInstanceInfo.h +++ b/workdir/shaders/autogen/tables/RaytraceInstanceInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Raytracing.h b/workdir/shaders/autogen/tables/Raytracing.h index 64c264a76..de65bf0cb 100644 --- a/workdir/shaders/autogen/tables/Raytracing.h +++ b/workdir/shaders/autogen/tables/Raytracing.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/RaytracingRays.h b/workdir/shaders/autogen/tables/RaytracingRays.h index ade364ae9..4b6041d6f 100644 --- a/workdir/shaders/autogen/tables/RaytracingRays.h +++ b/workdir/shaders/autogen/tables/RaytracingRays.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ReflectionCombine.h b/workdir/shaders/autogen/tables/ReflectionCombine.h index b297b7dc9..0669bb3a0 100644 --- a/workdir/shaders/autogen/tables/ReflectionCombine.h +++ b/workdir/shaders/autogen/tables/ReflectionCombine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ReflectionRTXUpscale.h b/workdir/shaders/autogen/tables/ReflectionRTXUpscale.h index e3ff1ea61..9a5f1b202 100644 --- a/workdir/shaders/autogen/tables/ReflectionRTXUpscale.h +++ b/workdir/shaders/autogen/tables/ReflectionRTXUpscale.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/RenderDeviceCapabilities.h b/workdir/shaders/autogen/tables/RenderDeviceCapabilities.h index c4fd194e8..bf3471176 100644 --- a/workdir/shaders/autogen/tables/RenderDeviceCapabilities.h +++ b/workdir/shaders/autogen/tables/RenderDeviceCapabilities.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMASharedConstants.h b/workdir/shaders/autogen/tables/SIGMASharedConstants.h index bb8a1034a..bd61ce03c 100644 --- a/workdir/shaders/autogen/tables/SIGMASharedConstants.h +++ b/workdir/shaders/autogen/tables/SIGMASharedConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass0Resources.h b/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass0Resources.h index ccc2d105c..9a69d725f 100644 --- a/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass0Resources.h +++ b/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass0Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass1Resources.h b/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass1Resources.h index 72b2a1c27..d5fc7d76d 100644 --- a/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass1Resources.h +++ b/workdir/shaders/autogen/tables/SIGMA_BlurFirstPass1Resources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_ClassifyTilesResources.h b/workdir/shaders/autogen/tables/SIGMA_ClassifyTilesResources.h index cc61c7f91..397f9154c 100644 --- a/workdir/shaders/autogen/tables/SIGMA_ClassifyTilesResources.h +++ b/workdir/shaders/autogen/tables/SIGMA_ClassifyTilesResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_CopyResources.h b/workdir/shaders/autogen/tables/SIGMA_CopyResources.h index cd2eb4524..4529037b3 100644 --- a/workdir/shaders/autogen/tables/SIGMA_CopyResources.h +++ b/workdir/shaders/autogen/tables/SIGMA_CopyResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_SmoothTilesResources.h b/workdir/shaders/autogen/tables/SIGMA_SmoothTilesResources.h index 868123a95..e8e5ce89f 100644 --- a/workdir/shaders/autogen/tables/SIGMA_SmoothTilesResources.h +++ b/workdir/shaders/autogen/tables/SIGMA_SmoothTilesResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_SplitScreenResources.h b/workdir/shaders/autogen/tables/SIGMA_SplitScreenResources.h index 14b99b31c..14d9648bc 100644 --- a/workdir/shaders/autogen/tables/SIGMA_SplitScreenResources.h +++ b/workdir/shaders/autogen/tables/SIGMA_SplitScreenResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SIGMA_TemporalStabilizationResources.h b/workdir/shaders/autogen/tables/SIGMA_TemporalStabilizationResources.h index 8eb550431..d21d57c56 100644 --- a/workdir/shaders/autogen/tables/SIGMA_TemporalStabilizationResources.h +++ b/workdir/shaders/autogen/tables/SIGMA_TemporalStabilizationResources.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SMAA_Blend.h b/workdir/shaders/autogen/tables/SMAA_Blend.h index 5a40508ac..2eaa9d6a7 100644 --- a/workdir/shaders/autogen/tables/SMAA_Blend.h +++ b/workdir/shaders/autogen/tables/SMAA_Blend.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SMAA_Global.h b/workdir/shaders/autogen/tables/SMAA_Global.h index bf9e19b54..ac3aa6a7d 100644 --- a/workdir/shaders/autogen/tables/SMAA_Global.h +++ b/workdir/shaders/autogen/tables/SMAA_Global.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SMAA_Weights.h b/workdir/shaders/autogen/tables/SMAA_Weights.h index 8dd4b8a4a..fc317c8ea 100644 --- a/workdir/shaders/autogen/tables/SMAA_Weights.h +++ b/workdir/shaders/autogen/tables/SMAA_Weights.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SceneData.h b/workdir/shaders/autogen/tables/SceneData.h index b77c11ab5..4aca258e7 100644 --- a/workdir/shaders/autogen/tables/SceneData.h +++ b/workdir/shaders/autogen/tables/SceneData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ShadowPayload.h b/workdir/shaders/autogen/tables/ShadowPayload.h index 9199f502c..4c28652c7 100644 --- a/workdir/shaders/autogen/tables/ShadowPayload.h +++ b/workdir/shaders/autogen/tables/ShadowPayload.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/SingleColor.h b/workdir/shaders/autogen/tables/SingleColor.h index 21055fd22..86189ad21 100644 --- a/workdir/shaders/autogen/tables/SingleColor.h +++ b/workdir/shaders/autogen/tables/SingleColor.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SingleColorDepth.h b/workdir/shaders/autogen/tables/SingleColorDepth.h index 3c933baeb..dd6bbd6ad 100644 --- a/workdir/shaders/autogen/tables/SingleColorDepth.h +++ b/workdir/shaders/autogen/tables/SingleColorDepth.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SkyData.h b/workdir/shaders/autogen/tables/SkyData.h index ad6def49b..1d72a4b59 100644 --- a/workdir/shaders/autogen/tables/SkyData.h +++ b/workdir/shaders/autogen/tables/SkyData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SkyFace.h b/workdir/shaders/autogen/tables/SkyFace.h index 9ab3ec8a1..9104fd2c6 100644 --- a/workdir/shaders/autogen/tables/SkyFace.h +++ b/workdir/shaders/autogen/tables/SkyFace.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/SkyState.h b/workdir/shaders/autogen/tables/SkyState.h index 5d8a55b5f..a6f747a0b 100644 --- a/workdir/shaders/autogen/tables/SkyState.h +++ b/workdir/shaders/autogen/tables/SkyState.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/StatGraph.h b/workdir/shaders/autogen/tables/StatGraph.h index a910a8560..8e21edcc0 100644 --- a/workdir/shaders/autogen/tables/StatGraph.h +++ b/workdir/shaders/autogen/tables/StatGraph.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/StatGraphLine.h b/workdir/shaders/autogen/tables/StatGraphLine.h index 97ba5fcf9..173695cf1 100644 --- a/workdir/shaders/autogen/tables/StatGraphLine.h +++ b/workdir/shaders/autogen/tables/StatGraphLine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/StencilState.h b/workdir/shaders/autogen/tables/StencilState.h index 8f7151929..e596405f8 100644 --- a/workdir/shaders/autogen/tables/StencilState.h +++ b/workdir/shaders/autogen/tables/StencilState.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Test.h b/workdir/shaders/autogen/tables/Test.h index bad9e12f4..eb7941db7 100644 --- a/workdir/shaders/autogen/tables/Test.h +++ b/workdir/shaders/autogen/tables/Test.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/TextureRenderer.h b/workdir/shaders/autogen/tables/TextureRenderer.h index 9cdbf2d25..b0c954b45 100644 --- a/workdir/shaders/autogen/tables/TextureRenderer.h +++ b/workdir/shaders/autogen/tables/TextureRenderer.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/TileClassifyData.h b/workdir/shaders/autogen/tables/TileClassifyData.h index 682d6ae44..e77883465 100644 --- a/workdir/shaders/autogen/tables/TileClassifyData.h +++ b/workdir/shaders/autogen/tables/TileClassifyData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/TileRecord.h b/workdir/shaders/autogen/tables/TileRecord.h index 083dcbeb6..0261b1cf4 100644 --- a/workdir/shaders/autogen/tables/TileRecord.h +++ b/workdir/shaders/autogen/tables/TileRecord.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/Triangle.h b/workdir/shaders/autogen/tables/Triangle.h index 6c81b8842..4800d1443 100644 --- a/workdir/shaders/autogen/tables/Triangle.h +++ b/workdir/shaders/autogen/tables/Triangle.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/UIRenderState.h b/workdir/shaders/autogen/tables/UIRenderState.h index 00c4c0a0e..a2b6a9fc6 100644 --- a/workdir/shaders/autogen/tables/UIRenderState.h +++ b/workdir/shaders/autogen/tables/UIRenderState.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/UIState.h b/workdir/shaders/autogen/tables/UIState.h index 22449d5fd..37a979442 100644 --- a/workdir/shaders/autogen/tables/UIState.h +++ b/workdir/shaders/autogen/tables/UIState.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/UpscalerSelectors.h b/workdir/shaders/autogen/tables/UpscalerSelectors.h index 2e7d946c4..d50ddd7dc 100644 --- a/workdir/shaders/autogen/tables/UpscalerSelectors.h +++ b/workdir/shaders/autogen/tables/UpscalerSelectors.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSLine.h b/workdir/shaders/autogen/tables/VSLine.h index ac1620362..daf0b9edb 100644 --- a/workdir/shaders/autogen/tables/VSLine.h +++ b/workdir/shaders/autogen/tables/VSLine.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMBlockerSearchOutput.h b/workdir/shaders/autogen/tables/VSMBlockerSearchOutput.h index 65b467562..c16e69fda 100644 --- a/workdir/shaders/autogen/tables/VSMBlockerSearchOutput.h +++ b/workdir/shaders/autogen/tables/VSMBlockerSearchOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMBlockerTilesAppend.h b/workdir/shaders/autogen/tables/VSMBlockerTilesAppend.h index 72804faf8..d04093d78 100644 --- a/workdir/shaders/autogen/tables/VSMBlockerTilesAppend.h +++ b/workdir/shaders/autogen/tables/VSMBlockerTilesAppend.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMConstants.h b/workdir/shaders/autogen/tables/VSMConstants.h index 1e3fbe0d4..51cff378f 100644 --- a/workdir/shaders/autogen/tables/VSMConstants.h +++ b/workdir/shaders/autogen/tables/VSMConstants.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMCopyPageDepth.h b/workdir/shaders/autogen/tables/VSMCopyPageDepth.h index 4667ec8f6..81e3f4db5 100644 --- a/workdir/shaders/autogen/tables/VSMCopyPageDepth.h +++ b/workdir/shaders/autogen/tables/VSMCopyPageDepth.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMCopyPageDepthBatch.h b/workdir/shaders/autogen/tables/VSMCopyPageDepthBatch.h index 5bc6e689c..ad6bb0808 100644 --- a/workdir/shaders/autogen/tables/VSMCopyPageDepthBatch.h +++ b/workdir/shaders/autogen/tables/VSMCopyPageDepthBatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMDepthAnalysis.h b/workdir/shaders/autogen/tables/VSMDepthAnalysis.h index 57ab5894c..6d2d613fa 100644 --- a/workdir/shaders/autogen/tables/VSMDepthAnalysis.h +++ b/workdir/shaders/autogen/tables/VSMDepthAnalysis.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMDispatchCommandData.h b/workdir/shaders/autogen/tables/VSMDispatchCommandData.h index 889be6f8b..e985c4b73 100644 --- a/workdir/shaders/autogen/tables/VSMDispatchCommandData.h +++ b/workdir/shaders/autogen/tables/VSMDispatchCommandData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMDownsampleHiZBatch.h b/workdir/shaders/autogen/tables/VSMDownsampleHiZBatch.h index 7cf185f03..3f3738b23 100644 --- a/workdir/shaders/autogen/tables/VSMDownsampleHiZBatch.h +++ b/workdir/shaders/autogen/tables/VSMDownsampleHiZBatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMGatherDispatchData.h b/workdir/shaders/autogen/tables/VSMGatherDispatchData.h index 58e2c2d11..6f7d608ce 100644 --- a/workdir/shaders/autogen/tables/VSMGatherDispatchData.h +++ b/workdir/shaders/autogen/tables/VSMGatherDispatchData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMGatherDispatchMaterialData.h b/workdir/shaders/autogen/tables/VSMGatherDispatchMaterialData.h index 955b5a2f9..af2fd5cb4 100644 --- a/workdir/shaders/autogen/tables/VSMGatherDispatchMaterialData.h +++ b/workdir/shaders/autogen/tables/VSMGatherDispatchMaterialData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMLevelDispatchInfo.h b/workdir/shaders/autogen/tables/VSMLevelDispatchInfo.h index 252324e68..b29ce01e8 100644 --- a/workdir/shaders/autogen/tables/VSMLevelDispatchInfo.h +++ b/workdir/shaders/autogen/tables/VSMLevelDispatchInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMLighting.h b/workdir/shaders/autogen/tables/VSMLighting.h index 074349a25..544e204b3 100644 --- a/workdir/shaders/autogen/tables/VSMLighting.h +++ b/workdir/shaders/autogen/tables/VSMLighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMPageBatch.h b/workdir/shaders/autogen/tables/VSMPageBatch.h index 067c1e86f..a758dec38 100644 --- a/workdir/shaders/autogen/tables/VSMPageBatch.h +++ b/workdir/shaders/autogen/tables/VSMPageBatch.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMPageHiZ.h b/workdir/shaders/autogen/tables/VSMPageHiZ.h index 006cc7830..db3984b24 100644 --- a/workdir/shaders/autogen/tables/VSMPageHiZ.h +++ b/workdir/shaders/autogen/tables/VSMPageHiZ.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMPageTableData.h b/workdir/shaders/autogen/tables/VSMPageTableData.h index 093072a84..c12c23bbb 100644 --- a/workdir/shaders/autogen/tables/VSMPageTableData.h +++ b/workdir/shaders/autogen/tables/VSMPageTableData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMScreenSpaceShadowParams.h b/workdir/shaders/autogen/tables/VSMScreenSpaceShadowParams.h index 465ef976b..a3794add6 100644 --- a/workdir/shaders/autogen/tables/VSMScreenSpaceShadowParams.h +++ b/workdir/shaders/autogen/tables/VSMScreenSpaceShadowParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMSearchVerdictAppend.h b/workdir/shaders/autogen/tables/VSMSearchVerdictAppend.h index 1a66f3e84..749d61e6a 100644 --- a/workdir/shaders/autogen/tables/VSMSearchVerdictAppend.h +++ b/workdir/shaders/autogen/tables/VSMSearchVerdictAppend.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMSelectors.h b/workdir/shaders/autogen/tables/VSMSelectors.h index 1f4f77872..371cb0623 100644 --- a/workdir/shaders/autogen/tables/VSMSelectors.h +++ b/workdir/shaders/autogen/tables/VSMSelectors.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMShadowLookup.h b/workdir/shaders/autogen/tables/VSMShadowLookup.h index 4445fdbc6..bbbbd21a7 100644 --- a/workdir/shaders/autogen/tables/VSMShadowLookup.h +++ b/workdir/shaders/autogen/tables/VSMShadowLookup.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMShadowLookupData.h b/workdir/shaders/autogen/tables/VSMShadowLookupData.h index 6046d1c64..9d5597eee 100644 --- a/workdir/shaders/autogen/tables/VSMShadowLookupData.h +++ b/workdir/shaders/autogen/tables/VSMShadowLookupData.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMShadowResolveIO.h b/workdir/shaders/autogen/tables/VSMShadowResolveIO.h index c38de3351..c76aa95e9 100644 --- a/workdir/shaders/autogen/tables/VSMShadowResolveIO.h +++ b/workdir/shaders/autogen/tables/VSMShadowResolveIO.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VSMTileListRead.h b/workdir/shaders/autogen/tables/VSMTileListRead.h index 09ca4a70c..541d96965 100644 --- a/workdir/shaders/autogen/tables/VSMTileListRead.h +++ b/workdir/shaders/autogen/tables/VSMTileListRead.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/ViewportContext.h b/workdir/shaders/autogen/tables/ViewportContext.h index 1bd5078b7..41855e011 100644 --- a/workdir/shaders/autogen/tables/ViewportContext.h +++ b/workdir/shaders/autogen/tables/ViewportContext.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelCopy.h b/workdir/shaders/autogen/tables/VoxelCopy.h index d4d279c10..3d4ce5e42 100644 --- a/workdir/shaders/autogen/tables/VoxelCopy.h +++ b/workdir/shaders/autogen/tables/VoxelCopy.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelDebug.h b/workdir/shaders/autogen/tables/VoxelDebug.h index 4ef270b40..f8b1f4c15 100644 --- a/workdir/shaders/autogen/tables/VoxelDebug.h +++ b/workdir/shaders/autogen/tables/VoxelDebug.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelGISelectors.h b/workdir/shaders/autogen/tables/VoxelGISelectors.h index dc1f2f4e4..cd05e83a0 100644 --- a/workdir/shaders/autogen/tables/VoxelGISelectors.h +++ b/workdir/shaders/autogen/tables/VoxelGISelectors.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelInfo.h b/workdir/shaders/autogen/tables/VoxelInfo.h index 3a62a7868..3ea152fef 100644 --- a/workdir/shaders/autogen/tables/VoxelInfo.h +++ b/workdir/shaders/autogen/tables/VoxelInfo.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelLighting.h b/workdir/shaders/autogen/tables/VoxelLighting.h index 4be3f9bb3..0ae31853f 100644 --- a/workdir/shaders/autogen/tables/VoxelLighting.h +++ b/workdir/shaders/autogen/tables/VoxelLighting.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelMipMap.h b/workdir/shaders/autogen/tables/VoxelMipMap.h index e0e073ab4..7dc471292 100644 --- a/workdir/shaders/autogen/tables/VoxelMipMap.h +++ b/workdir/shaders/autogen/tables/VoxelMipMap.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelOutput.h b/workdir/shaders/autogen/tables/VoxelOutput.h index e8c5430ae..1843779fa 100644 --- a/workdir/shaders/autogen/tables/VoxelOutput.h +++ b/workdir/shaders/autogen/tables/VoxelOutput.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelScreen.h b/workdir/shaders/autogen/tables/VoxelScreen.h index c1352fe4b..452e4dcd9 100644 --- a/workdir/shaders/autogen/tables/VoxelScreen.h +++ b/workdir/shaders/autogen/tables/VoxelScreen.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelTilingParams.h b/workdir/shaders/autogen/tables/VoxelTilingParams.h index 04014ae74..c362ffbd3 100644 --- a/workdir/shaders/autogen/tables/VoxelTilingParams.h +++ b/workdir/shaders/autogen/tables/VoxelTilingParams.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelUpscale.h b/workdir/shaders/autogen/tables/VoxelUpscale.h index 4fda84162..f0d5e9529 100644 --- a/workdir/shaders/autogen/tables/VoxelUpscale.h +++ b/workdir/shaders/autogen/tables/VoxelUpscale.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelVisibility.h b/workdir/shaders/autogen/tables/VoxelVisibility.h index 2178c6ab5..558201bf6 100644 --- a/workdir/shaders/autogen/tables/VoxelVisibility.h +++ b/workdir/shaders/autogen/tables/VoxelVisibility.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/VoxelZero.h b/workdir/shaders/autogen/tables/VoxelZero.h index 2d62686a6..18bb2a33b 100644 --- a/workdir/shaders/autogen/tables/VoxelZero.h +++ b/workdir/shaders/autogen/tables/VoxelZero.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/Voxelization.h b/workdir/shaders/autogen/tables/Voxelization.h index 5447844ff..5ae16e6d3 100644 --- a/workdir/shaders/autogen/tables/Voxelization.h +++ b/workdir/shaders/autogen/tables/Voxelization.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/WorkGR_ClassifyPixels_NodeEmulation.h b/workdir/shaders/autogen/tables/WorkGR_ClassifyPixels_NodeEmulation.h index 5d875484d..c25b8e5d0 100644 --- a/workdir/shaders/autogen/tables/WorkGR_ClassifyPixels_NodeEmulation.h +++ b/workdir/shaders/autogen/tables/WorkGR_ClassifyPixels_NodeEmulation.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/WorkGR_Shadows_NodeEmulation.h b/workdir/shaders/autogen/tables/WorkGR_Shadows_NodeEmulation.h index cacd49d33..f6b438b68 100644 --- a/workdir/shaders/autogen/tables/WorkGR_Shadows_NodeEmulation.h +++ b/workdir/shaders/autogen/tables/WorkGR_Shadows_NodeEmulation.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/WorkGraphTest.h b/workdir/shaders/autogen/tables/WorkGraphTest.h index c9a784402..fabee496b 100644 --- a/workdir/shaders/autogen/tables/WorkGraphTest.h +++ b/workdir/shaders/autogen/tables/WorkGraphTest.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/mesh_vertex_input.h b/workdir/shaders/autogen/tables/mesh_vertex_input.h index f6143931d..62f436ce8 100644 --- a/workdir/shaders/autogen/tables/mesh_vertex_input.h +++ b/workdir/shaders/autogen/tables/mesh_vertex_input.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "enums.h" diff --git a/workdir/shaders/autogen/tables/node_data.h b/workdir/shaders/autogen/tables/node_data.h index 3180e0caa..3fd8a4c38 100644 --- a/workdir/shaders/autogen/tables/node_data.h +++ b/workdir/shaders/autogen/tables/node_data.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/tables/vertex_input.h b/workdir/shaders/autogen/tables/vertex_input.h index b96cdaf12..d677473a4 100644 --- a/workdir/shaders/autogen/tables/vertex_input.h +++ b/workdir/shaders/autogen/tables/vertex_input.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once #include "sig_hlsl.hlsl" diff --git a/workdir/shaders/autogen/workgraph/WorkGR.h b/workdir/shaders/autogen/workgraph/WorkGR.h index 49ea3b256..6daf4214b 100644 --- a/workdir/shaders/autogen/workgraph/WorkGR.h +++ b/workdir/shaders/autogen/workgraph/WorkGR.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #pragma once diff --git a/workdir/shaders/ddgi/ddgi_debug.hlsl b/workdir/shaders/ddgi/ddgi_debug.hlsl index 38c26bd80..447b2c797 100644 --- a/workdir/shaders/ddgi/ddgi_debug.hlsl +++ b/workdir/shaders/ddgi/ddgi_debug.hlsl @@ -38,7 +38,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) uint3 probe_coord = probes.ddgi_probe_grid_coord(probe_index, probe_counts); float3 world_pos = probes.ddgi_probe_world_pos(probe_coord, info.GetGrid_min().xyz, info.GetProbe_spacing().xyz, float3(0, 0, 0), probe_counts); - // Not being traced/convolved this frame (DDGIProbeResidencyMark, ddgi.sig, + // Not being traced/convolved this frame (DDGIProbeResidencyMark, ddgi.prism, // didn't mark it needed) -- skip entirely rather than draw a stale // marker, same as this probe just isn't there right now. uint probe_linear_index = probes.ddgi_probe_linear_index(probe_coord, probe_counts); @@ -80,7 +80,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) return; // Color by this probe's own convolved irradiance, sampled toward the - // camera -- see DDGIDebugData's own comment (ddgi.sig) for why that + // camera -- see DDGIDebugData's own comment (ddgi.prism) for why that // direction, not the surface-facing one a real shading point would use. uint texel_size = info.GetAtlas_info().x; float3 view_dir = normalize(frame.GetCamera().GetPosition().xyz - world_pos); diff --git a/workdir/shaders/ddgi/ddgi_indirect_debug.hlsl b/workdir/shaders/ddgi/ddgi_indirect_debug.hlsl index 9ce0e30d4..97e5dd92f 100644 --- a/workdir/shaders/ddgi/ddgi_indirect_debug.hlsl +++ b/workdir/shaders/ddgi/ddgi_indirect_debug.hlsl @@ -43,7 +43,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) // just against `pos` (this view's own sample point) instead of a // secondary bounce hit point, since that's what this view actually reads // from. Lets this debug view stay accurate under real residency culling - // (see the PassNode's own comment, ddgi.sig) instead of needing "Enable + // (see the PassNode's own comment, ddgi.prism) instead of needing "Enable // residency culling" turned off globally just to inspect one area, which // traces/convolves every probe in the whole grid regardless of whether // this view is even pointed at it. diff --git a/workdir/shaders/ddgi/ddgi_probe_convolve.hlsl b/workdir/shaders/ddgi/ddgi_probe_convolve.hlsl index fa16cccbc..5c7b5522e 100644 --- a/workdir/shaders/ddgi/ddgi_probe_convolve.hlsl +++ b/workdir/shaders/ddgi/ddgi_probe_convolve.hlsl @@ -3,7 +3,7 @@ #include "octahedral.hlsl" // Cosine-weighted RESAMPLE of a probe's own fixed traced ray set -// (DDGI_ProbeRayRadiance, ddgi_sphere_fibonacci directions -- see ddgi.sig's +// (DDGI_ProbeRayRadiance, ddgi_sphere_fibonacci directions -- see ddgi.prism's // DDGI_ProbeRayCount comment) into one irradiance texel per output direction, // plus a mean/mean-square hit-distance visibility texel (depth-test input for // DDGIOcclusionMode::ProbeDepthTest, ddgi_sample.hlsl). Not a 1:1 read any @@ -35,7 +35,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID, uint3 gtid : SV_GroupThreadID) const DDGIProbeConvolveData data = GetDDGIProbeConvolveData(); // Dispatch size is one cascade's own DDGI_AtlasWidth x DDGI_AtlasHeight x // DDGI_ProbeCountY -- xy is the (probe_x, probe_z) plane, z is probe_y - // directly (see DDGIProbeSelect's own comment, ddgi.sig, on why probe_y + // directly (see DDGIProbeSelect's own comment, ddgi.prism, on why probe_y // and the cascade both live in the array dimension instead of a folded // 2D width/height). All the octahedral/probe-cell math below stays in // plane-local space; only the final texture writes add the array slice @@ -47,7 +47,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID, uint3 gtid : SV_GroupThreadID) // No bound buffer -- DDGIProbes here is only ever used for its pure // coordinate-math helpers (ddgi_atlas_probe_coord/ddgi_atlas_local_uv, - // neither reads `this`), see DDGIProbeConvolveData's own comment (ddgi.sig) + // neither reads `this`), see DDGIProbeConvolveData's own comment (ddgi.prism) // for why the actual probe buffer isn't plumbed into this pass at all. DDGIProbes probes; diff --git a/workdir/shaders/ddgi/ddgi_probe_residency_mark.hlsl b/workdir/shaders/ddgi/ddgi_probe_residency_mark.hlsl index 0b0dddd77..8f58b288c 100644 --- a/workdir/shaders/ddgi/ddgi_probe_residency_mark.hlsl +++ b/workdir/shaders/ddgi/ddgi_probe_residency_mark.hlsl @@ -5,14 +5,14 @@ // consumes DDGI_ProbeResidencyPending -- whatever TraceIndirectDiffuse // (IndirectRTX/IndirectRTXHalf, raytracing.hlsl) wrote at its own per-pixel // indirect ray's hit points LAST frame, one probe cell per hit, see that -// buffer's own comment (ddgi.sig) for why one frame lagged -- into +// buffer's own comment (ddgi.prism) for why one frame lagged -- into // DDGI_ProbeResidency, clearing pending back to 0 as it's consumed so each // mark is used exactly once. The coarsest cascade (DDGIInfo::cascade_info.w) // is exempt by default: forced fully resident regardless of pending, since // it has nowhere further to fall back to -- DDGIInfo::flags.z // (cull_coarsest_cascade, mirrored from DDGIGraph.cpp's own Variable) // turns that exemption off, culling it the same as every other cascade. -// See that flag's own comment (ddgi.sig) for what turning it off risks: +// See that flag's own comment (ddgi.prism) for what turning it off risks: // the coarsest-cascade sampling fallback has no residency check of its own // yet, so a probe this drops can be read back stale. // @@ -75,7 +75,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) bool coarsest_exempt = is_coarsest && !cull_coarsest; // Toroidal-scroll forced eviction (see DDGIProbeResidencyMarkData's own - // comment, ddgi.sig, for the derivation): a probe's slot on axis A is + // comment, ddgi.prism, for the derivation): a probe's slot on axis A is // being re-tenanted this frame -- its stored data is for whatever cell // USED to alias here, not the one that does now -- iff // wrap(slot[A] - scroll_lo[A], counts[A]) < scroll_count[A]. Checked per @@ -119,7 +119,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) // next activation -- whenever a screen ray next hits near it -- ramps // in from a clean history instead of DDGIProbeConvolve's temporal // blend mixing fresh light with the previous tenant's unrelated one - // (see this struct's own comment, ddgi.sig). + // (see this struct's own comment, ddgi.prism). uint texel_size = data.GetInfo().GetAtlas_info().x; uint2 origin = probes.ddgi_atlas_origin(slot, texel_size); uint slice = probes.ddgi_atlas_array_slice(slot.y, data.GetInfo().GetCascade_info().y); @@ -137,7 +137,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) // Stagger gate: which rotating 1/stagger_k-sized subset of THIS cascade's // probes is due for actual retrace this frame (DDGIGraph.cpp's // g_ddgi_stagger_k/g_ddgi_stagger_bucket, mirrored here via - // DDGIInfo::rays_per_probe.yz -- see that field's own comment, ddgi.sig). + // DDGIInfo::rays_per_probe.yz -- see that field's own comment, ddgi.prism). // Deliberately NOT folded into `needed`/probe_residency above: a probe // that's needed but simply hasn't had its turn this frame stays resident // (still sampled, still contributing its last traced value) -- only diff --git a/workdir/shaders/ddgi/ddgi_probe_select.hlsl b/workdir/shaders/ddgi/ddgi_probe_select.hlsl index 10c163ea0..8598bd350 100644 --- a/workdir/shaders/ddgi/ddgi_probe_select.hlsl +++ b/workdir/shaders/ddgi/ddgi_probe_select.hlsl @@ -18,7 +18,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) return; // This cascade's own linear offset into the shared (DDGI_CascadeCount- - // times-larger) probe buffer -- see DDGIInfo's own comment (ddgi.sig). + // times-larger) probe buffer -- see DDGIInfo's own comment (ddgi.prism). uint probe_offset = GetDDGIProbeSelectData().GetInfo().GetCascade_info().x; GetDDGIProbeSelectData().GetProbes().GetProbes()[probe_offset + linear_index].last_full_update_frame = 0; } diff --git a/workdir/shaders/ddgi/ddgi_probe_trace.hlsl b/workdir/shaders/ddgi/ddgi_probe_trace.hlsl index d40f2e490..ab971f03b 100644 --- a/workdir/shaders/ddgi/ddgi_probe_trace.hlsl +++ b/workdir/shaders/ddgi/ddgi_probe_trace.hlsl @@ -12,7 +12,7 @@ // Traces DDGI_ProbeRayCount (info.GetRays_per_probe().x) spherical-fibonacci // directions per probe -- decoupled from the octahedral output atlas's own // texel resolution (was 1 ray per radiance-atlas texel, i.e. hard-tied to -// DDGI_ProbeTexelSize^2; see ddgi.sig's DDGI_ProbeRayCount comment for why +// DDGI_ProbeTexelSize^2; see ddgi.prism's DDGI_ProbeRayCount comment for why // that changed). Each ray's fully-shaded result lands in a flat // DDGI_ProbeRayRadiance entry, not an atlas texel -- DDGIProbeConvolve // resamples this fixed ray set into the actual texel grid. Real material @@ -21,7 +21,7 @@ // // Multi-bounce feedback: on a real hit, samples DDGI_ProbeIrradiance/ // DDGI_ProbeVisibility -- LAST frame's convolved output, see -// DDGIProbeTrace's own PassNode comment (ddgi.sig) for why reading them here +// DDGIProbeTrace's own PassNode comment (ddgi.prism) for why reading them here // is safe -- at the hit point/normal and adds albedo * irradiance on top of // the direct-lit result. This is the actual multi/infinite-bounce mechanism // (AC Shadows talk: "using values from the previous frame ... multi-bounce @@ -55,7 +55,7 @@ void DDGIProbeTraceRaygenShader() // DDGIGraph.cpp's render() actually issued this frame (info.GetFlags().y, // mirrored from g_ddgi_use_indirect_dispatch). Neither touches the // octahedral atlas at all any more -- a ray has no texel of its own - // (ddgi.sig's DDGI_ProbeRayRadiance comment) -- both just need to end up + // (ddgi.prism's DDGI_ProbeRayRadiance comment) -- both just need to end up // with (probe_coord, ray_index). // // Fixed-size path: launches a 3D grid of @@ -159,7 +159,7 @@ void DDGIProbeTraceRaygenShader() payload_gi.init(); // Swap the real recursive RTX shadow ray MyClosestHitShader normally // fires for a single cheap VSM lookup instead (see RayPayload:: - // use_vsm_shadow's own comment, raytracing.sig) -- DDGI traces far more + // use_vsm_shadow's own comment, raytracing.prism) -- DDGI traces far more // rays per frame than any other RTX consumer, and a probe's own shadow // term doesn't need a primary screen ray's precision. payload_gi.use_vsm_shadow = 1; @@ -186,7 +186,7 @@ void DDGIProbeTraceRaygenShader() float3 hit_pos = ray.Origin + ray.Direction * payload_gi.dist; // Dilation (see [[project-ddgi]] planning notes and - // DDGI_ProbeResidencyPending's own comment, ddgi.sig): marks the same + // DDGI_ProbeResidencyPending's own comment, ddgi.prism): marks the same // 8 corner probes the feedback sample right below is about to read as // needed too, one cascade at a time (this probe's own -- unlike // TraceIndirectDiffuse's marking block, which doesn't know which diff --git a/workdir/shaders/ddgi/ddgi_sample.hlsl b/workdir/shaders/ddgi/ddgi_sample.hlsl index e7f5effb3..9e09392f4 100644 --- a/workdir/shaders/ddgi/ddgi_sample.hlsl +++ b/workdir/shaders/ddgi/ddgi_sample.hlsl @@ -13,7 +13,7 @@ // each probe's map is only texel_size^2 texels -- nearest-sampling it made // the result visibly blocky ("mosaic") as the shading direction/position // moved smoothly across it. `slice` selects the array layer (probe_y + -// cascade offset, see ddgi_atlas_array_slice, ddgi.sig) -- the 2D atlas +// cascade offset, see ddgi_atlas_array_slice, ddgi.prism) -- the 2D atlas // plane only ever holds (probe_x, probe_z). float4 ddgi_bilinear_texel4(Texture2DArray tex, uint2 origin, uint slice, uint texel_size, float2 uv01) { @@ -86,7 +86,7 @@ float ddgi_probe_visibility_ray(RaytracingAccelerationStructure scene, float3 wo } // Depth-comparison occlusion test (DDGIOcclusionMode::ProbeDepthTest, see -// its own comment, ddgi.sig): reads the probe's own stored visibility texel +// its own comment, ddgi.prism): reads the probe's own stored visibility texel // -- mean hit distance in the direction from the probe toward the shading // point, the same moment DDGIProbeTrace/DDGIProbeConvolve already write -- // and compares it directly against the shading point's own distance, @@ -114,7 +114,7 @@ float ddgi_probe_depth_test(float2 vis, float dist_to_point, float bias) // blending the 8 surrounding probes, weighted by backface rejection // (Majercik et al., "Dynamic Diffuse Global Illumination") and one of three // occlusion tests (DDGIOcclusionMode, DDGIGraph.cpp's "Occlusion test" -// combo box, ddgi.sig's own comment on each value): none (fastest, most +// combo box, ddgi.prism's own comment on each value): none (fastest, most // light leaking through walls/thin occluders), a depth-map-style comparison // against the probe's own stored hit-distance moment (cheap, no extra ray), // or a real traced visibility ray per corner (correct, real added cost). @@ -131,15 +131,15 @@ float3 ddgi_sample_irradiance( uint texel_size = info.GetAtlas_info().x; uint3 probe_counts = info.GetProbe_counts().xyz; float3 spacing = info.GetProbe_spacing().xyz; - // See DDGIInfo::flags' own comment (ddgi.sig) for the bit layout. + // See DDGIInfo::flags' own comment (ddgi.prism) for the bit layout. uint occlusion_mode = (info.GetFlags().z >> 4) & 0x3; // No bound buffer -- only used for its pure coordinate-math helpers, same - // reasoning as DDGIProbeConvolveData's own comment (ddgi.sig). + // reasoning as DDGIProbeConvolveData's own comment (ddgi.prism). DDGIProbes probes; // Absolute (grid_min-independent) cell + fractional part -- see - // ddgi_world_to_slot's own comment (ddgi.sig) for why this must be a + // ddgi_world_to_slot's own comment (ddgi.prism) for why this must be a // pure function of world_pos/spacing alone, not (world_pos-grid_min)/ // spacing: subtracting grid_min first doesn't change the fractional // part (floor(x-n) = floor(x)-n for integer n, so frac is identical @@ -151,7 +151,7 @@ float3 ddgi_sample_irradiance( float3 frac_part = probe_space - base; float2 sample_uv = ddgi_oct_encode(normalize(normal)) * 0.5 + 0.5; - // DDGIInfo::grid_min.w (see its own comment, ddgi.sig) -- a runtime-tunable + // DDGIInfo::grid_min.w (see its own comment, ddgi.prism) -- a runtime-tunable // fraction of this cascade's own spacing, not a fixed constant, so the // same bias scales sensibly across cascades of very different spacing. float depth_bias = max(spacing.x, max(spacing.y, spacing.z)) * info.GetGrid_min().w; @@ -170,7 +170,7 @@ float3 ddgi_sample_irradiance( continue; // Toroidal wrap of the ABSOLUTE cell (see ddgi_wrap/ddgi_world_to_slot's - // own comments, ddgi.sig) -- always valid, no in-grid check needed: + // own comments, ddgi.prism) -- always valid, no in-grid check needed: // ddgi_sample_irradiance_cascaded's own margin check already // guarantees world_pos (and therefore every one of its 8 corners) // sits well inside this cascade's current window before this diff --git a/workdir/shaders/ddgi/octahedral.hlsl b/workdir/shaders/ddgi/octahedral.hlsl index 47e5b548e..76a650d4a 100644 --- a/workdir/shaders/ddgi/octahedral.hlsl +++ b/workdir/shaders/ddgi/octahedral.hlsl @@ -5,7 +5,7 @@ // per-probe radiance/irradiance/visibility out as flat 2D atlas texels (see // [[project-ddgi]] planning notes). uv is in [-1,1], not [0,1] -- callers // convert to/from texel space themselves (DDGIProbes::ddgi_atlas_origin / -// ddgi_atlas_local_uv, ddgi.sig). +// ddgi_atlas_local_uv, ddgi.prism). float3 ddgi_oct_decode(float2 uv) { @@ -32,7 +32,7 @@ float2 ddgi_oct_encode(float3 n) // Mapping") -- a deterministic, near-uniform distribution of `count` // directions over the sphere, computed purely from `index`/`count`: no // precomputed direction table, no per-probe storage. DDGIProbeTrace fires -// exactly one ray per index (ddgi.sig's DDGI_ProbeRayCount comment on why +// exactly one ray per index (ddgi.prism's DDGI_ProbeRayCount comment on why // this replaced 1-ray-per-octahedral-texel), and DDGIProbeConvolve // recomputes the SAME direction from the same index when resampling that // ray's stored radiance into the octahedral output map -- the two must stay diff --git a/workdir/shaders/enums.h b/workdir/shaders/enums.h index f97ec8174..9208bbe15 100644 --- a/workdir/shaders/enums.h +++ b/workdir/shaders/enums.h @@ -1,8 +1,8 @@ // ============================================================================ // THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT // ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. +// Generated by Prism from .prism files in sources/Prism/defs/ +// Changes will be lost on next generation. Edit the .prism source files instead. // ============================================================================ #ifndef SIG_ENUMS_H #define SIG_ENUMS_H diff --git a/workdir/shaders/gbuffer/mesh_shader.hlsl b/workdir/shaders/gbuffer/mesh_shader.hlsl index 46bae9c6c..a9edda8d0 100644 --- a/workdir/shaders/gbuffer/mesh_shader.hlsl +++ b/workdir/shaders/gbuffer/mesh_shader.hlsl @@ -267,7 +267,7 @@ void AS(uint gtid : SV_GroupThreadID, uint dtid : SV_DispatchThreadID, uint gid // THIS AS: gbuffer/stencil bind their own camera, PSSM binds the // light camera. Voxelization uses mesh_shader_voxel's own AS, where // frustum/cone culling stays disabled by design (3-axis raster). - // MaterialPreview3D (see material_preview.sig) also disables it: its + // MaterialPreview3D (see material_preview.prism) also disables it: its // mesh instance's cull data lives in the same shared global buffers // the main editor scene concurrently reads/writes every frame, and // boundary meshlets were flickering in/out -- a borderline/racy @@ -280,7 +280,7 @@ void AS(uint gtid : SV_GroupThreadID, uint dtid : SV_DispatchThreadID, uint gid #ifdef HIZ_OCCLUSION // Additive Hi-Z check. The PSO permutation decides where this is on: - // stage 2 of the occlusion culler only (see scene.sig). + // stage 2 of the occlusion culler only (see scene.prism). if (visible) visible = !IsOccludedHiZ(cull_data, m, frameInfo.GetCamera()); #endif diff --git a/workdir/shaders/gbuffer/normal_roughness_repack.hlsl b/workdir/shaders/gbuffer/normal_roughness_repack.hlsl index 74458f8be..591d3ed88 100644 --- a/workdir/shaders/gbuffer/normal_roughness_repack.hlsl +++ b/workdir/shaders/gbuffer/normal_roughness_repack.hlsl @@ -14,7 +14,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) float4 encoded = Normals.Load(uint3(dispatchID.xy, 0)); - // compress_normals() (FrameData.sig) always scales the unit normal by a + // compress_normals() (FrameData.prism) always scales the unit normal by a // POSITIVE scalar (best-fit LUT value / cube-face projection factor) // before biasing to [0,1] -- so re-normalizing the decoded value recovers // the original direction exactly, without needing the LUT a second time. diff --git a/workdir/shaders/materials/material_preview_3d.hlsl b/workdir/shaders/materials/material_preview_3d.hlsl index 299d68c70..230d9687d 100644 --- a/workdir/shaders/materials/material_preview_3d.hlsl +++ b/workdir/shaders/materials/material_preview_3d.hlsl @@ -2,7 +2,7 @@ // direct (non-indirect) dispatch_mesh -- see MaterialPreviewSession::dispatch // -- instead of the flat/analytic-sphere compute dispatch in // UniversalMaterialPreview.hlsl. Reuses mesh_shader.hlsl's generic VS/AS (the -// same ones GBufferDraw/DepthDraw/DrawAxis use -- see material_preview.sig's +// same ones GBufferDraw/DepthDraw/DrawAxis use -- see material_preview.prism's // MaterialPreview3D) for real interpolated position/normal/UV, and the // *same* capture-injected COMPILED_FUNC body (see MaterialContext:: // capture_value in Values.cpp) that the compute path uses -- only the diff --git a/workdir/shaders/nrd/gbuffer_pack.hlsl b/workdir/shaders/nrd/gbuffer_pack.hlsl index 372339083..5d5334ddd 100644 --- a/workdir/shaders/nrd/gbuffer_pack.hlsl +++ b/workdir/shaders/nrd/gbuffer_pack.hlsl @@ -1,10 +1,10 @@ // Front-end packing for NRD REBLUR_DIFFUSE/REBLUR_SPECULAR (see -// [[project-nrd-integration]] and nrd_sig_test.sig's NRD_GBufferPack +// [[project-nrd-integration]] and nrd_sig_test.prism's NRD_GBufferPack // comment). Derives IN_VIEWZ (linear view-space Z), IN_NORMAL_ROUGHNESS // (NRD_FrontEnd_PackNormalAndRoughness encoding) and IN_MV from the existing // GBuffer, and packs IN_DIFF/SPEC_RADIANCE_HITDIST from whichever raw // candidate (RTX or VCT) indirect_use_vct/reflection_use_vct selects -- see -// this pass's .sig comment for why packing lives here now instead of at +// this pass's .prism comment for why packing lives here now instead of at // each raygen, and why only the selected candidate, not both. #include "../autogen/NRD_GBufferPackParams.h" #include "../autogen/FrameInfo.h" @@ -53,7 +53,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) } Out_ViewZ[dispatchID.xy] = viewZ; - // compress_normals() (FrameData.sig) always scales the unit normal by a + // compress_normals() (FrameData.prism) always scales the unit normal by a // positive scalar before biasing to [0,1] -- re-normalizing recovers the // original direction exactly (same decode as normal_roughness_repack.hlsl). float4 encoded = GBuffer_Normals[dispatchID.xy]; @@ -67,7 +67,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) Out_NormalRoughness[dispatchID.xy] = NRD_FrontEnd_PackNormalAndRoughness(normal, roughness, 0); // REBLUR's gIn_Mv is hardcoded Texture2D regardless of 2D/3D - // mode (see this pass's .sig comment) -- GBuffer_Speed is only 2D + // mode (see this pass's .prism comment) -- GBuffer_Speed is only 2D // screen-space, so z is a constant 0 pad, matching // CommonSettings::motionVectorScale.z = 0 (set in HAL.NRD.cpp). Out_Mv[dispatchID.xy] = float4(GBuffer_Speed[dispatchID.xy], 0, 0); diff --git a/workdir/shaders/nrd/sig_clear.hlsl b/workdir/shaders/nrd/sig_clear.hlsl index 1f033cfcc..f01741840 100644 --- a/workdir/shaders/nrd/sig_clear.hlsl +++ b/workdir/shaders/nrd/sig_clear.hlsl @@ -1,6 +1,6 @@ // Prototype (see [[project-nrd-integration]]): routes NRD's real, // unmodified Clear.cs.hlsl through this engine's SIG-generated bindless -// accessors (sources/SIGParser/sigs/nrd_sig_test.sig's Clear_Constants +// accessors (sources/Prism/defs/nrd_sig_test.prism's Clear_Constants // struct) instead of NRD.hlsli's normal raw register()-bound globals. // // NRD.hlsli's own DXC branch is skipped entirely once NRD_CONSTANTS_START/ diff --git a/workdir/shaders/nrd/sig_reblur_blur_specular.hlsl b/workdir/shaders/nrd/sig_reblur_blur_specular.hlsl index cc8f89de1..d463273bc 100644 --- a/workdir/shaders/nrd/sig_reblur_blur_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_blur_specular.hlsl @@ -1,6 +1,6 @@ // REBLUR_SPECULAR sibling of sig_reblur_blur.hlsl (see // [[project-nrd-integration]]) -- routed via REBLUR_BlurSpecularResources -// (Diff->Spec renamed, same resource count -- see nrd_sig_test.sig's comment +// (Diff->Spec renamed, same resource count -- see nrd_sig_test.prism's comment // on that struct). #define NRD_INTERNAL #define NRD_SIGNAL SPEC diff --git a/workdir/shaders/nrd/sig_reblur_historyfix_specular.hlsl b/workdir/shaders/nrd/sig_reblur_historyfix_specular.hlsl index 93fa2ed25..6a3268cf9 100644 --- a/workdir/shaders/nrd/sig_reblur_historyfix_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_historyfix_specular.hlsl @@ -1,6 +1,6 @@ // REBLUR_SPECULAR sibling of sig_reblur_historyfix.hlsl (see // [[project-nrd-integration]]) -- routed via -// REBLUR_HistoryFixSpecularResources (see nrd_sig_test.sig's comment on that +// REBLUR_HistoryFixSpecularResources (see nrd_sig_test.prism's comment on that // struct for the field-list difference vs diffuse -- one extra input, // gIn_SpecHitDistForTracking). #define NRD_INTERNAL diff --git a/workdir/shaders/nrd/sig_reblur_hitdistreconstruction_specular.hlsl b/workdir/shaders/nrd/sig_reblur_hitdistreconstruction_specular.hlsl index d5f356c71..cfdc8f725 100644 --- a/workdir/shaders/nrd/sig_reblur_hitdistreconstruction_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_hitdistreconstruction_specular.hlsl @@ -1,7 +1,7 @@ // REBLUR_SPECULAR sibling of sig_reblur_hitdistreconstruction.hlsl (see // [[project-nrd-integration]]) -- same shim pattern, NRD_SIGNAL SPEC instead // of DIFF, routed via REBLUR_HitDistReconstructionSpecularResources -// (Diff->Spec renamed fields, same resource count -- see nrd_sig_test.sig's +// (Diff->Spec renamed fields, same resource count -- see nrd_sig_test.prism's // comment on that struct). #define NRD_INTERNAL #define NRD_SIGNAL SPEC diff --git a/workdir/shaders/nrd/sig_reblur_postblur_ts0_specular.hlsl b/workdir/shaders/nrd/sig_reblur_postblur_ts0_specular.hlsl index f2c28c791..2be9e201d 100644 --- a/workdir/shaders/nrd/sig_reblur_postblur_ts0_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_postblur_ts0_specular.hlsl @@ -3,7 +3,7 @@ // emits gOut_InternalData/gOut_SpecCopy since the TemporalStabilization pass // is disabled and won't produce them itself. Routed via // REBLUR_PostBlurTS0SpecularResources (Diff->Spec renamed, same resource -// count -- see nrd_sig_test.sig's comment on that struct). +// count -- see nrd_sig_test.prism's comment on that struct). #define NRD_INTERNAL #define NRD_SIGNAL SPEC #define NRD_MODE RADIANCE diff --git a/workdir/shaders/nrd/sig_reblur_postblur_ts1_specular.hlsl b/workdir/shaders/nrd/sig_reblur_postblur_ts1_specular.hlsl index 8a0bf52b5..db3e4d686 100644 --- a/workdir/shaders/nrd/sig_reblur_postblur_ts1_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_postblur_ts1_specular.hlsl @@ -3,7 +3,7 @@ // TemporalStabilization pass runs afterward and owns gOut_InternalData // itself, so PostBlur skips producing it here. Routed via // REBLUR_PostBlurTS1SpecularResources (Diff->Spec renamed, same resource -// count -- see nrd_sig_test.sig's comment on that struct). +// count -- see nrd_sig_test.prism's comment on that struct). #define NRD_INTERNAL #define NRD_SIGNAL SPEC #define NRD_MODE RADIANCE diff --git a/workdir/shaders/nrd/sig_reblur_prepass_specular.hlsl b/workdir/shaders/nrd/sig_reblur_prepass_specular.hlsl index 73fbbe957..2815662fc 100644 --- a/workdir/shaders/nrd/sig_reblur_prepass_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_prepass_specular.hlsl @@ -1,7 +1,7 @@ // REBLUR_SPECULAR sibling of sig_reblur_prepass.hlsl (see // [[project-nrd-integration]]) -- routed via REBLUR_PrePassSpecularResources // (Diff->Spec renamed, plus gOut_SpecHitDistForTracking with no diffuse -// equivalent -- see nrd_sig_test.sig's comment on that struct). +// equivalent -- see nrd_sig_test.prism's comment on that struct). #define NRD_INTERNAL #define NRD_SIGNAL SPEC #define NRD_MODE RADIANCE diff --git a/workdir/shaders/nrd/sig_reblur_temporalaccumulation_specular.hlsl b/workdir/shaders/nrd/sig_reblur_temporalaccumulation_specular.hlsl index ea3b58fd1..1d9e146a2 100644 --- a/workdir/shaders/nrd/sig_reblur_temporalaccumulation_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_temporalaccumulation_specular.hlsl @@ -1,6 +1,6 @@ // REBLUR_SPECULAR sibling of sig_reblur_temporalaccumulation.hlsl (see // [[project-nrd-integration]]) -- routed via -// REBLUR_TemporalAccumulationSpecularResources (see nrd_sig_test.sig's +// REBLUR_TemporalAccumulationSpecularResources (see nrd_sig_test.prism's // comment on that struct for the field-list differences vs diffuse). #define NRD_INTERNAL #define NRD_SIGNAL SPEC diff --git a/workdir/shaders/nrd/sig_reblur_temporalstabilization_specular.hlsl b/workdir/shaders/nrd/sig_reblur_temporalstabilization_specular.hlsl index 3e0d65f15..ae7935995 100644 --- a/workdir/shaders/nrd/sig_reblur_temporalstabilization_specular.hlsl +++ b/workdir/shaders/nrd/sig_reblur_temporalstabilization_specular.hlsl @@ -1,6 +1,6 @@ // REBLUR_SPECULAR sibling of sig_reblur_temporalstabilization.hlsl (see // [[project-nrd-integration]]) -- routed via -// REBLUR_TemporalStabilizationSpecularResources (see nrd_sig_test.sig's +// REBLUR_TemporalStabilizationSpecularResources (see nrd_sig_test.prism's // comment on that struct for the field-list difference vs diffuse -- one // extra input, gIn_SpecHitDistForTracking). #define NRD_INTERNAL diff --git a/workdir/shaders/nrd/unpack_debug.hlsl b/workdir/shaders/nrd/unpack_debug.hlsl index 27369e400..d99e5b8cc 100644 --- a/workdir/shaders/nrd/unpack_debug.hlsl +++ b/workdir/shaders/nrd/unpack_debug.hlsl @@ -1,6 +1,6 @@ // Debug-only unpack of REBLUR's packed output (YCoCg + normalized hit // distance) into plain RGB, for the "RTX Indirect (REBLUR), Unpacked" debug -// view (see [[project-nrd-integration]], nrd_sig_test.sig's comment). Not +// view (see [[project-nrd-integration]], nrd_sig_test.prism's comment). Not // used by the real consumer (RTXCombine unpacks inline in rtx_combine.hlsl). #include "../autogen/NRD_UnpackDebugParams.h" #include "3rdparty/NRD.hlsli" diff --git a/workdir/shaders/postprocess/downsample.hlsl b/workdir/shaders/postprocess/downsample.hlsl index e18fb852d..7f1a44d00 100644 --- a/workdir/shaders/postprocess/downsample.hlsl +++ b/workdir/shaders/postprocess/downsample.hlsl @@ -1,5 +1,5 @@ // Fused GBuffer half-res downsample + generic 8x8-tile Hi/Low classification. -// See TileClassifyData's own comment (pssm.sig) for the algorithm summary. +// See TileClassifyData's own comment (pssm.prism) for the algorithm summary. // // One 8x8 thread group per full-res screen tile (= one 4x4 patch of the // half-res output). Everything is derived from a single cooperative load of @@ -124,13 +124,13 @@ void CS( // Point-queryable form of the same verdict, for a consumer that // just wants "is my tile Hi" without indirect-dispatch machinery - // (IndirectRTX's raygen -- see its own comment, voxel.sig). + // (IndirectRTX's raygen -- see its own comment, voxel.prism). params.GetTile_flags()[groupID.xy] = hi; // Second, independent axis: worth a full-res specular trace only if // some pixel is both glossy enough to show detail AND metallic // enough for that detail to survive the downstream multiply (see - // TileClassifyData's own comment, pssm.sig). + // TileClassifyData's own comment, pssm.prism). uint roughness_hi = (min_roughness < params.GetRoughness_threshold() && max_metallic > params.GetMetallic_threshold()) ? 1 : 0; if (roughness_hi) diff --git a/workdir/shaders/rtx/dispatch_rays_args_build.hlsl b/workdir/shaders/rtx/dispatch_rays_args_build.hlsl index e679fb33c..8eb302068 100644 --- a/workdir/shaders/rtx/dispatch_rays_args_build.hlsl +++ b/workdir/shaders/rtx/dispatch_rays_args_build.hlsl @@ -5,7 +5,7 @@ // with D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS. Shader-table // addresses/sizes/strides are constant for the RTXPSO's lifetime; width/ // height are this frame's caller-supplied dispatch size (see this PSO's -// own .sig comment). One thread -- 104 bytes of bookkeeping, not a workload. +// own .prism comment). One thread -- 104 bytes of bookkeeping, not a workload. [numthreads(1, 1, 1)] void CS(uint3 dispatchID : SV_DispatchThreadID) { @@ -33,7 +33,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) // Never read -- exists purely so this struct's HLSL stride (104 bytes) // matches what D3D12 requires for a DISPATCH_RAYS command signature's // ByteStride, and what the C++-side mirror's own natural alignment - // already gives it (see this struct's own comment, raytracing.sig). + // already gives it (see this struct's own comment, raytracing.prism). args._pad = 0; data.GetArgs()[data.GetDest_index()] = args; diff --git a/workdir/shaders/rtx/raytracing.hlsl b/workdir/shaders/rtx/raytracing.hlsl index 5b87014e7..3503ff629 100644 --- a/workdir/shaders/rtx/raytracing.hlsl +++ b/workdir/shaders/rtx/raytracing.hlsl @@ -40,7 +40,7 @@ // (RGB=hit color, A=hit distance) now; NRD_GBufferPack (gbuffer_pack.hlsl) // does the REBLUR-specific front-end pack for whichever candidate NRD // actually needs, and only when NRD is actually running (see its own -// comment, nrd_sig_test.sig, for why this moved). +// comment, nrd_sig_test.prism, for why this moved). typedef BuiltInTriangleIntersectionAttributes MyAttributes; @@ -281,7 +281,7 @@ void ShadowRaygenShader() tex_noise[itc] = float4(shadow.xxx, float(reprojected.frames) / FRAMES);// lerp(tex_noise[itc], shadow, 0.01);// !payload_shadow.hit; } -// Independent RTX-only reference shadow for ShadowRTX (see voxel.sig's +// Independent RTX-only reference shadow for ShadowRTX (see voxel.prism's // PassNode ShadowRTX). Deliberately NOT sharing code with ShadowRaygenShader // above -- that one stays untouched, still used by RTXShadowReference's own // 16-sample ground truth. This one is still 16 taps per pixel (1 tap left @@ -430,7 +430,7 @@ void ColorPass() // Shared body for MyRaygenShaderIndirectRTXOnly/MyRaygenShaderIndirectRTXHalfRes -// (see voxel.sig's PassNode IndirectRTX/IndirectRTXHalf): one ray per pixel, +// (see voxel.prism's PassNode IndirectRTX/IndirectRTXHalf): one ray per pixel, // GGX-importance-sampled hemisphere direction, fixed reach, no voxel grid // involved, no history blend. Denoised by NRD REBLUR_DIFFUSE (see // [[project-nrd-integration]]). Parameterized on depth/normals/output/blue- @@ -475,11 +475,11 @@ void TraceIndirectDiffuse(Texture2D depth_tex, Texture2D normal_t // probe volume's accumulated multi-bounce light actually reaches the // rendered frame, not just the probes' own atlas. Reads LAST frame's // convolved DDGI_ProbeIrradiance/Visibility -- DDGIProbeTrace/Convolve - // for THIS frame now run AFTER IndirectRTX/ReflectionRTX (test.sig's + // for THIS frame now run AFTER IndirectRTX/ReflectionRTX (test.prism's // MainPipeline), on [Async2], overlapping with the rest of the frame // instead of gating this read, so what's actually in the buffer here is // one frame stale (same one-frame lag DDGIProbeTrace's own feedback - // read already had, see that PassNode's own comment, ddgi.sig, for why + // read already had, see that PassNode's own comment, ddgi.prism, for why // that's fine given the multi-bounce loop is already inherently // multi-frame). No pi/BRDF normalization on the added term yet (tuning // item, not structural). @@ -490,7 +490,7 @@ void TraceIndirectDiffuse(Texture2D depth_tex, Texture2D normal_t float3 hit_pos = pos + dir * payload_gi.dist; // Residency marking (see [[project-ddgi]] planning notes and - // DDGI_ProbeResidencyPending's own comment, ddgi.sig): this screen + // DDGI_ProbeResidencyPending's own comment, ddgi.prism): this screen // ray's hit point is exactly the "what does the screen actually need // lit right now" signal DDGIProbeResidencyMark consumes NEXT frame to // decide which probes to keep tracing. Independent of the use_fallback @@ -551,7 +551,7 @@ void TraceIndirectDiffuse(Texture2D depth_tex, Texture2D normal_t // Master on/off, mirrored identically into every cascade's own // DDGIInfo (DDGIGraph.cpp's ddgi_make_info) -- see DDGIInfo::flags' - // own comment (ddgi.sig). + // own comment (ddgi.prism). if (ddgi_cascade0.GetFlags().x != 0) { float3 indirect = ddgi_sample_irradiance_cascaded(hit_pos, payload_gi.hit_normal, @@ -568,7 +568,7 @@ void TraceIndirectDiffuse(Texture2D depth_tex, Texture2D normal_t // when NRD is actually running) and RTXCombine/DLSS-RR directly (which // wants exactly this shape for its ColorIn/SpecularHitDistance tags, see // HAL.DLSSRR.ixx's own comment). See NRD_GBufferPack's comment - // (nrd_sig_test.sig) for why packing moved out of this raygen. + // (nrd_sig_test.prism) for why packing moved out of this raygen. tex_noise[itc] = float4(payload_gi.color.rgb*2, payload_gi.dist); } @@ -585,8 +585,8 @@ void MyRaygenShaderIndirectRTXOnly() // Low-tile pixels reuse IndirectRTXHalf's always-on half-res trace // instead of firing their own ray -- see TileClassifyData's own comment - // (pssm.sig) for the classifier, and IndirectRTXUpscale's (this file's - // autogen source, voxel.sig) for why a direct bilinear sample of the + // (pssm.prism) for the classifier, and IndirectRTXUpscale's (this file's + // autogen source, voxel.prism) for why a direct bilinear sample of the // packed half-res buffer is safe here. Only Hi tiles below pay for a // real TraceRay call. uint hi = upscale.GetTileFlags()[itc / 8]; @@ -601,7 +601,7 @@ void MyRaygenShaderIndirectRTXOnly() TraceIndirectDiffuse(voxel_screen.GetGbuffer().GetDepth(), voxel_screen.GetGbuffer().GetNormals(), tex_noise, voxel_output.GetBlueNoise()); } -// Always-on half-res base layer for IndirectRTXHalf (see voxel.sig's +// Always-on half-res base layer for IndirectRTXHalf (see voxel.prism's // PassNode IndirectRTXHalf) -- same trace as MyRaygenShaderIndirectRTXOnly's // Hi-tile path, just over GBuffer_HalfDepth/HalfNormals (a quarter the // rays), consumed by MyRaygenShaderIndirectRTXOnly above for its Low tiles. @@ -615,7 +615,7 @@ void MyRaygenShaderIndirectRTXHalfRes() } // Shared body for MyRaygenShaderReflectionRTXOnly/MyRaygenShaderReflectionRTXHalfRes -// (see voxel.sig's PassNode ReflectionRTX/ReflectionRTXHalf): pure DXR, one +// (see voxel.prism's PassNode ReflectionRTX/ReflectionRTXHalf): pure DXR, one // ray per pixel, blue-noise-jittered direction (SampleReflectionVector -- // this is what makes the output genuinely noisy rather than a perfect // mirror, which is what a denoiser is meant to clean up), fixed TMax, no @@ -752,7 +752,7 @@ void MyRaygenShaderReflectionRTXOnly() // Skip the fresh ray only when BOTH tile axes say Low -- a geometric // edge makes the half-res buffer untrustworthy regardless of material, // and a glossy+metallic surface needs real detail regardless of how - // flat it is (see ReflectionRTXUpscale's own comment, voxel.sig). + // flat it is (see ReflectionRTXUpscale's own comment, voxel.prism). uint2 tile = itc / 8; bool needs_trace = upscale.GetTileFlags()[tile] || upscale.GetRoughnessTileFlags()[tile]; if (!needs_trace) @@ -766,7 +766,7 @@ void MyRaygenShaderReflectionRTXOnly() TraceReflection(voxel_screen.GetGbuffer().GetDepth(), voxel_screen.GetGbuffer().GetNormals(), tex_noise, tex_dir_pdf, voxel_output.GetBlueNoise()); } -// Always-on half-res base layer for ReflectionRTXHalf (see voxel.sig's +// Always-on half-res base layer for ReflectionRTXHalf (see voxel.prism's // PassNode ReflectionRTXHalf) -- same trace as MyRaygenShaderReflectionRTXOnly's // Hi-tile path, just over GBuffer_HalfDepth/HalfNormals (a quarter the // rays), consumed by MyRaygenShaderReflectionRTXOnly above for its Low tiles. @@ -780,7 +780,7 @@ void MyRaygenShaderReflectionRTXHalfRes() } -// Indirect-GI voxel-cone-traced signal for VoxelScreen (see voxel.sig's +// Indirect-GI voxel-cone-traced signal for VoxelScreen (see voxel.prism's // PassNode VoxelScreen): RTX primary ray (GGX-importance-sampled hemisphere // direction, same as MyRaygenShaderIndirectRTXOnly) with a short reach, // falling back to a cone-trace through the 3D voxel volume on miss. An @@ -839,7 +839,7 @@ void MyRaygenShader() tex_noise_raw[itc] = float4(payload_gi.color.rgb, payload_gi.dist); } -// Reflection voxel-cone-traced signal for ScreenReflection (see voxel.sig's +// Reflection voxel-cone-traced signal for ScreenReflection (see voxel.prism's // PassNode ScreenReflection): RTX primary ray (SampleReflectionVector, same // as MyRaygenShaderReflectionRTXOnly) with a roughness-dependent short reach, // falling back to a cone-trace through the 3D voxel volume on miss. An diff --git a/workdir/shaders/rtx/rtx_combine.hlsl b/workdir/shaders/rtx/rtx_combine.hlsl index bf32588e2..c131beea6 100644 --- a/workdir/shaders/rtx/rtx_combine.hlsl +++ b/workdir/shaders/rtx/rtx_combine.hlsl @@ -78,7 +78,7 @@ void CS(uint3 dispatchID : SV_DispatchThreadID) // output now (RGB=hit color, A=hit distance, not REBLUR-packed) -- NRD // doesn't run under DLSS-RR any more, DLSS-RR does its own // reconstruction/denoising on this exact signal (see RTXCombine's own - // comment, voxel.sig). + // comment, voxel.prism). float3 reflection = GetRTXCombine().GetReflection()[tc].rgb; float3 refl_color = get_PBR(albedo.rgb, reflection, normal, v, roughness, metallic); diff --git a/workdir/shaders/rtx/universal_material_raytracing.hlsl b/workdir/shaders/rtx/universal_material_raytracing.hlsl index 6101e3928..a712a065a 100644 --- a/workdir/shaders/rtx/universal_material_raytracing.hlsl +++ b/workdir/shaders/rtx/universal_material_raytracing.hlsl @@ -16,7 +16,7 @@ #include "autogen/tables/ColorShadowPayload.h" #include "autogen/rtx/ColorShadowPass.h" // RayPayload::use_vsm_shadow's own opt-in cheap path (see its comment, -// raytracing.sig) -- get_shadow_vsm_simple, the same lean lookup VoxelGI's +// raytracing.prism) -- get_shadow_vsm_simple, the same lean lookup VoxelGI's // own Lighting pass uses (voxel_lighting.hlsl) for exactly the same reason // (runs before VSM_BlockerClassify/VSM_ShadowResolve, so only the raw // atlas+page-table lookup is available). No "../" here despite this file @@ -98,7 +98,7 @@ void ShadowSurface(in MyAttributes attr, out float4 color, out float opacity) // RayPayload::use_vsm_shadow's own cheap path (see its comment, -// raytracing.sig): bridges VSMShadowLookupData (vsm.sig, bound by the pass +// raytracing.prism): bridges VSMShadowLookupData (vsm.prism, bound by the pass // that opted in) into the VSMConstants/VSMLighting shapes // get_shadow_vsm_simple actually takes -- exactly the same field-by-field // copy voxel_lighting.hlsl's own get_shadow() already does, for the same @@ -260,7 +260,7 @@ void MyClosestHitShader(inout RayPayload payload, in MyAttributes attr) float3 sun_vis = 1.0; if (payload.use_vsm_shadow) { - // Cheap path (RayPayload::use_vsm_shadow's own comment, raytracing.sig): + // Cheap path (RayPayload::use_vsm_shadow's own comment, raytracing.prism): // one VSM lookup instead of a real recursive shadow ray -- no // transparent-occluder iteration (VSM's own shadow atlas doesn't // carry per-material transmittance the way ColorShadowPass does), @@ -306,7 +306,7 @@ void MyClosestHitShader(inout RayPayload payload, in MyAttributes attr) payload.color = float4(color.rgb * NdotL * sun_vis * (1 - metallic) + glow.rgb, 1.0); payload.dist = RayTCurrent(); // DDGIProbeTrace's own feedback-term consumer -- see this payload - // field's own comment (raytracing.sig) for why these two exist. + // field's own comment (raytracing.prism) for why these two exist. payload.hit_normal = t.v.normal; payload.albedo = color.rgb * (1 - metallic); diff --git a/workdir/shaders/shadows/vsm/vsm.hlsl b/workdir/shaders/shadows/vsm/vsm.hlsl index fb390a3bf..ee2b59294 100644 --- a/workdir/shaders/shadows/vsm/vsm.hlsl +++ b/workdir/shaders/shadows/vsm/vsm.hlsl @@ -51,7 +51,7 @@ float4 combine_result(float2 tc, uint2 pixel) VSMConstants constants = GetVSMConstants(); // This pass (VSM_Combine) only runs any more when use_vsm_penumbra is - // off -- see its own PassNode comment in vsm.sig. The penumbra-on case + // off -- see its own PassNode comment in vsm.prism. The penumbra-on case // (classify -> search -> blur, Phase 5.18 Part A follow-up) moved // entirely into stage 3 (VSM_ShadowResolve), which now does this same // PBR combine itself and writes ResultTexture directly instead of an @@ -63,7 +63,7 @@ float4 combine_result(float2 tc, uint2 pixel) // Debug view (VSM.ixx's vsm_debug_view, a single-select enum shared // verbatim with the C++ side -- see VSMConstants.debug_view's own - // comment in vsm.sig): flat per-level color, checkerboard-darkened by + // comment in vsm.prism): flat per-level color, checkerboard-darkened by // page position within that level, so page/level seams are directly // visible -- used to check whether a visual artifact actually lines up // with a real boundary. Only reachable in non-penumbra mode (this pass diff --git a/workdir/shaders/shadows/vsm/vsm_blocker_classify.hlsl b/workdir/shaders/shadows/vsm/vsm_blocker_classify.hlsl index 7849cbc7d..e0b9d03b3 100644 --- a/workdir/shaders/shadows/vsm/vsm_blocker_classify.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_blocker_classify.hlsl @@ -20,7 +20,7 @@ static const GBuffer gbuffer = GetVSMLighting().GetGbuffer(); // hi/low-tile-list pattern -- one 16x16 group per screen tile, each thread // classifies its own pixel via vsm_classify_blocker, and a groupshared // reduction decides the WHOLE tile's verdict. Writes NOTHING pixel-shaped -// -- purely classification and bucketing; see vsm.sig's own PassNode +// -- purely classification and bucketing; see vsm.prism's own PassNode // comment for why (a resource written by several independent downstream // passes with no data dependency between them isn't reliably visible to // FrameGraph's dependency resolution -- confirmed live, twice, earlier this diff --git a/workdir/shaders/shadows/vsm/vsm_blocker_search.hlsl b/workdir/shaders/shadows/vsm/vsm_blocker_search.hlsl index 8d0640fc2..dcfe53072 100644 --- a/workdir/shaders/shadows/vsm/vsm_blocker_search.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_blocker_search.hlsl @@ -21,7 +21,7 @@ static const GBuffer gbuffer = GetVSMLighting().GetGbuffer(); // appended tile count, one 16x16 group per tile. Writes the raw // blocker-search result to VSMBlockerSearchOutput's own dedicated texture // (NOT a texture VSM_Combine samples directly any more) for stage 3's -// shadow-blur PSO to read back -- see that struct's own comment in vsm.sig. +// shadow-blur PSO to read back -- see that struct's own comment in vsm.prism. // // Still does its own per-pixel classification internally // (vsm_search_blocker calls vsm_classify_blocker itself) even though stage diff --git a/workdir/shaders/shadows/vsm/vsm_debug_tile_overlay.hlsl b/workdir/shaders/shadows/vsm/vsm_debug_tile_overlay.hlsl index 8a0e38751..fc995a625 100644 --- a/workdir/shaders/shadows/vsm/vsm_debug_tile_overlay.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_debug_tile_overlay.hlsl @@ -18,7 +18,7 @@ static const GBuffer gbuffer = GetVSMLighting().GetGbuffer(); #include "vsm_impl_resolve.hlsl" // Debug view (VSM.ixx's vsm_debug_view == HizClassify) -- see this PassNode's -// own comment in vsm.sig for why this reads the REAL tile lists directly +// own comment in vsm.prism for why this reads the REAL tile lists directly // instead of guessing from the final shadow value. Only ever dispatched // when the toggle is on; paints a flat color onto VSMLighting's `result` // field (the same RWTexture2D ResultTexture VSM_Combine already @@ -48,7 +48,7 @@ void CS_OVERLAY_DARK(uint3 groupID : SV_GroupID, uint3 groupThreadID : SV_GroupT } // Stage 2's own post-search verdict (see VSMSearchVerdictAppend's own -// comment in vsm.sig) -- confirmed_lit_tiles: every pixel individually +// comment in vsm.prism) -- confirmed_lit_tiles: every pixel individually // resolved lit after the REAL search ran, distinct color (cyan) from // lit_tiles' green so it's visible how much of the frame stage 1's cheap // classify alone couldn't prove, but the real search still confirmed lit. @@ -61,7 +61,7 @@ void CS_OVERLAY_CONFIRMED_LIT(uint3 groupID : SV_GroupID, uint3 groupThreadID : // blur_tiles: PER-PIXEL treatment, not a flat color -- a tile lands here // because SOME pixel in it was genuinely ambiguous, but most of the OTHERS // still resolved via a sentinel (see VSMSearchVerdictAppend's own comment -// in vsm.sig) even though the whole tile still had to dispatch. Reads the +// in vsm.prism) even though the whole tile still had to dispatch. Reads the // same packed VSM_BlockerSearchResult data CS_SHADOW_BLUR itself decodes // (VSM_ShadowResolve.hlsl) and mirrors its exact sentinel buckets -- dark // green/blue (half brightness of lit_tiles/dark_tiles' own colors) for a @@ -104,7 +104,7 @@ void CS_OVERLAY_BLUR(uint3 groupID : SV_GroupID, uint3 groupThreadID : SV_GroupT // Moved here from VSM.hlsl's combine_result now that VSM_Combine no longer // runs at all when use_vsm_penumbra is on (see this PassNode's own comment -// in vsm.sig) -- both full-screen, not tile-list-driven, since these debug +// in vsm.prism) -- both full-screen, not tile-list-driven, since these debug // views don't care which classify bucket a pixel landed in. Mutually // exclusive with each other and with the tile-classify overlay above (see // VSM.cpp's m_debugoverlay_render for the precedence). diff --git a/workdir/shaders/shadows/vsm/vsm_gather_dispatch.hlsl b/workdir/shaders/shadows/vsm/vsm_gather_dispatch.hlsl index e6da22409..7c088f3b4 100644 --- a/workdir/shaders/shadows/vsm/vsm_gather_dispatch.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_gather_dispatch.hlsl @@ -9,7 +9,7 @@ // // Phase 5.19: CS below now skips alpha-cutout materials (routed instead to // CS_MATERIAL's per-pipeline buckets, see VSMGatherDispatchMaterialData's -// own comment in vsm.sig) -- everything else (the common, opaque case) +// own comment in vsm.prism) -- everything else (the common, opaque case) // still goes through this single default list/dispatch exactly as before. #include "../../autogen/GatherPipelineGlobal.h" @@ -28,7 +28,7 @@ static const VSMGatherDispatchData gatherData = GetVSMGatherDispatchData(); #elif defined(BUILD_FUNC_CS_MATERIAL) #include "../../autogen/VSMGatherDispatchMaterialData.h" static const VSMGatherDispatchMaterialData gatherData = GetVSMGatherDispatchMaterialData(); -// Same packed-8-ids convention as meshrender.sig's GatherPipeline.pip_ids / +// Same packed-8-ids convention as meshrender.prism's GatherPipeline.pip_ids / // gather_pipeline.hlsl's ids[8] -- see vsm_append_to_bucket below. Direct // field access (not GetMaterial_pip_ids(), which is the per-index accessor // generated for a fixed-size array field), matching gather_pipeline.hlsl's @@ -81,7 +81,7 @@ void aabb_light_space_bounds(AABB aabb, float4x4 node_mat, float4x4 light_view, // // material_cb is populated here unconditionally (not just for CS_MATERIAL's // alpha-cutout entries) -- see VSMDispatchCommandData's own comment in -// vsm.sig for why the default/opaque list needs it wired too, even though +// vsm.prism for why the default/opaque list needs it wired too, even though // VSMDepthDraw's shader never reads it. bool vsm_try_build_entry(MeshCommandData mesh, MaterialCommandData material, VSMLevelDispatchInfo level, float4x4 light_view, out VSMDispatchCommandData entry) { diff --git a/workdir/shaders/shadows/vsm/vsm_hiz_downsample_batch.hlsl b/workdir/shaders/shadows/vsm/vsm_hiz_downsample_batch.hlsl index e1642eb9d..a056c674c 100644 --- a/workdir/shaders/shadows/vsm/vsm_hiz_downsample_batch.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_hiz_downsample_batch.hlsl @@ -11,7 +11,7 @@ static const VSMDownsampleHiZBatch data = GetVSMDownsampleHiZBatch(); // per-bind cost proportional to one mip's worth of subresources instead of // the whole pyramid's). src is a UAV (RWTexture2DArray), not an SRV, even // though this shader only ever reads it -- see VSMDownsampleHiZBatch's own -// comment in vsm.sig for why (keeps the whole VSM_PageHiZ resource in one +// comment in vsm.prism for why (keeps the whole VSM_PageHiZ resource in one // layout for this entire pass, avoiding a real barrier-layout conflict // confirmed via GPU-Based Validation). [numthreads(8, 8, 1)] diff --git a/workdir/shaders/shadows/vsm/vsm_impl.hlsl b/workdir/shaders/shadows/vsm/vsm_impl.hlsl index 744fa4f38..60fc0e8fd 100644 --- a/workdir/shaders/shadows/vsm/vsm_impl.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_impl.hlsl @@ -15,7 +15,7 @@ // level_info[] holds MaxLevels (26) slots, one geometric ladder, no // regular/adaptive split (see VSMClipmap::page_world_size, VSM.ixx's -// LevelZeroSlot). Keep this literal 26 in sync with vsm.sig's level_info[26] +// LevelZeroSlot). Keep this literal 26 in sync with vsm.prism's level_info[26] // if that ever changes -- only used as an array-bound sanity check now, the // actual sweep range each frame is c.GetActive_min()/GetActive_max(). #define VSM_MAX_LEVELS 26 @@ -69,7 +69,7 @@ int get_vsm_level(VSMConstants c, float2 pos_ls) // Takes page_table directly (a plain Texture2DArray), not a whole // VSMLighting -- the only field this ever read from it. Callers not already // holding a VSMLighting (e.g. VSM_Combine's own VSMShadowNoiseParams, which -// has no `GBuffer gbuffer;`/full VSMLighting binding any more, see vsm.sig's +// has no `GBuffer gbuffer;`/full VSMLighting binding any more, see vsm.prism's // VSM_Combine PassNode comment) can pass their own page_table field straight // through instead of needing a whole VSMLighting just for this one lookup. uint get_vsm_slot(VSMConstants c, Texture2DArray page_table, float2 pos_ls, int start_level, out int resolved_level) diff --git a/workdir/shaders/shadows/vsm/vsm_impl_resolve.hlsl b/workdir/shaders/shadows/vsm/vsm_impl_resolve.hlsl index 291f4197e..acbd19bd4 100644 --- a/workdir/shaders/shadows/vsm/vsm_impl_resolve.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_impl_resolve.hlsl @@ -4,8 +4,8 @@ // single-tap-per-corner 3x3 hardware-PCF, no blocker search/blur/denoiser at // all. Also used by VoxelGI's Lighting pass (voxel_lighting.hlsl's // get_shadow(), via the lean VSMShadowLookup payload -- see that struct's -// own comment, vsm.sig), which runs before VSM_ShadowResolve/VSM_Combine in -// the frame (test.sig's MainPipeline ordering) and so has no other shadow +// own comment, vsm.prism), which runs before VSM_ShadowResolve/VSM_Combine in +// the frame (test.prism's MainPipeline ordering) and so has no other shadow // signal available yet. When penumbra is ON, VSM_Combine (VSM.hlsl's // combine_result, the only other caller) doesn't run at all -- stage 3 // (VSM_ShadowResolve) does its own per-pixel resolve instead, denoised by diff --git a/workdir/shaders/shadows/vsm/vsm_screen_space_shadow.hlsl b/workdir/shaders/shadows/vsm/vsm_screen_space_shadow.hlsl index ac5bea11d..d52347204 100644 --- a/workdir/shaders/shadows/vsm/vsm_screen_space_shadow.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_screen_space_shadow.hlsl @@ -15,7 +15,7 @@ // Adapted from Bend Studio's public screen-space shadow projection code // (../../denoiser/ss_shadow.hlsl, used unmodified by RTXShadow elsewhere in // this engine) -- a deliberately SEPARATE copy, not a shared #include. See -// vsm.sig's own VSMScreenSpaceShadowParams comment for why: this copy's +// vsm.prism's own VSMScreenSpaceShadowParams comment for why: this copy's // EarlyOutPixel reads VSM_BlockerSearch's own per-tile ambiguity verdict // instead of a generic depth-bounds check, and VSM's own quality knobs // (SurfaceThickness/BilinearThreshold/ShadowContrast/SAMPLE_COUNT below) are @@ -39,7 +39,7 @@ // surface_thickness field, VSM::vsm_contact_shadow_thickness) -- the reach/ // width a contact shadow reads as is sensitive enough to scene depth scale // that it needs to be tunable without a rebuild, unlike the others. Same -// starting values SS_Shadow.sig documents as its own defaults. +// starting values SS_Shadow.prism documents as its own defaults. static const float VSM_SS_BILINEAR_THRESHOLD = 0.02; static const float VSM_SS_SHADOW_CONTRAST = 4.0; diff --git a/workdir/shaders/shadows/vsm/vsm_shadow_resolve.hlsl b/workdir/shaders/shadows/vsm/vsm_shadow_resolve.hlsl index befce36e6..5b8d0614d 100644 --- a/workdir/shaders/shadows/vsm/vsm_shadow_resolve.hlsl +++ b/workdir/shaders/shadows/vsm/vsm_shadow_resolve.hlsl @@ -36,7 +36,7 @@ static const float VSM_SUN_ANGULAR_RADIUS = 0.02; // ~17 deg -- hardcoded, tune #include "vsm_impl.hlsl" // Stage 3 (Phase 5.18 Part A follow-up, take 4): three PSOs sharing this one -// file, one PassNode, one render() -- see vsm.sig's VSM_ShadowResolve +// file, one PassNode, one render() -- see vsm.prism's VSM_ShadowResolve // PassNode comment for why all three must be issued from the same render() // (mirrors VoxelGIGraph's VoxelCombine issuing its own blur+blur2 // exec_indirects together -- the root-cause fix for two separate @@ -55,11 +55,11 @@ uint2 resolve_pixel(uint3 groupID, uint3 groupThreadID) // writes ResultTexture directly with the real shaded pixel now, instead of // a bare shadow scalar VSM_Combine's own separate full-screen pass used to // read and apply afterward (see this file's own PassNode comment in -// vsm.sig for why that intermediate step went away). Mirrors VSM.hlsl's +// vsm.prism for why that intermediate step went away). Mirrors VSM.hlsl's // combine_result formula exactly -- shadow * NL * albedo * (1-metallic); // EnvBRDF is computed there but never actually used in its return, so it's // not replicated here either. -// VSMDebugView::ShadowOnly (see vsm.sig's own enum comment): grayscale the +// VSMDebugView::ShadowOnly (see vsm.prism's own enum comment): grayscale the // real per-pixel shadow scalar directly instead of the PBR combine, so it // stays legible over dark/black albedo. Reads GetVSMConstants() directly // rather than threading a param through every one of this function's @@ -451,7 +451,7 @@ void CS_SHADOW_BLUR(uint3 groupID : SV_GroupID, uint3 groupThreadID : SV_GroupTh // so this evaluates opacity directly off MaterialCommandData's // flat opacity_texture_index rather than the material's real // compiled shader graph (see that field's own comment in - // meshrender.sig for why, and its limits: only the common + // meshrender.prism for why, and its limits: only the common // single-texture-drives-opacity case is recognized -- anything // else reads ~0u and is treated as opaque, same as today). RayQuery rayQuery; @@ -537,7 +537,7 @@ void CS_SHADOW_BLUR(uint3 groupID : SV_GroupID, uint3 groupThreadID : SV_GroupTh #endif } - // VSM_ScreenSpaceShadow's contact-shadow patch (see vsm.sig's own + // VSM_ScreenSpaceShadow's contact-shadow patch (see vsm.prism's own // PassNode comment) -- min(), same reasoning as the RTX dual-blur above: // whichever method actually caught the true occluder wins, rather than // diluting toward the wrong answer. Only ever meaningfully written for diff --git a/workdir/shaders/voxelgi/voxel_lighting.hlsl b/workdir/shaders/voxelgi/voxel_lighting.hlsl index 335d7f84d..15f73a935 100644 --- a/workdir/shaders/voxelgi/voxel_lighting.hlsl +++ b/workdir/shaders/voxelgi/voxel_lighting.hlsl @@ -24,7 +24,7 @@ static const float3 dir = normalize(GetFrameInfo().GetSunDir().xyz); // Simple atlas+page-table lookup only (VSM_impl_resolve.hlsl's // get_shadow_vsm_simple, no penumbra/PCSS) -- Lighting runs before // VSM_BlockerClassify/VSM_BlockerSearch/VSM_ShadowResolve in the frame (see -// test.sig's MainPipeline ordering), so that's all that's available here. +// test.prism's MainPipeline ordering), so that's all that's available here. float get_shadow(float3 wpos, float3 normal) { VSMConstants c = (VSMConstants)0; diff --git a/workdir/shaders/voxelgi/voxel_screen.hlsl b/workdir/shaders/voxelgi/voxel_screen.hlsl index 6c9cd957f..23acd1bdd 100644 --- a/workdir/shaders/voxelgi/voxel_screen.hlsl +++ b/workdir/shaders/voxelgi/voxel_screen.hlsl @@ -1,4 +1,4 @@ -// Only GraphicsPSO VoxelDebug (voxel.sig) still compiles this file, for its +// Only GraphicsPSO VoxelDebug (voxel.prism) still compiles this file, for its // generic fullscreen-quad VS -- the old voxel-cone-traced GI pipeline that // used to live here (VoxelScreen's CS/PS/PS_Resize entries: getGI/trace/ // get_history and friends) is gone now that NRD REBLUR_DIFFUSE/SPECULAR From d43a694ed459d068ac9e87a4d50edabab383eaeb Mon Sep 17 00:00:00 2001 From: cheater Date: Wed, 23 Sep 2026 21:47:17 +0300 Subject: [PATCH 5/5] even better --- overview/Prism.txt | 87 +- sources/Core/Math/Types/Vectors.ixx | 23 + sources/HAL/autogen/slots/GraphInput.ixx | 23 - sources/Prism/.antlr/Prism.interp | 4 +- sources/Prism/.antlr/PrismBaseListener.h | 6 + sources/Prism/.antlr/PrismBaseVisitor.h | 8 + sources/Prism/.antlr/PrismListener.h | 6 + sources/Prism/.antlr/PrismParser.cpp | 1950 +++++++++-------- sources/Prism/.antlr/PrismParser.h | 99 +- sources/Prism/.antlr/PrismVisitor.h | 4 + sources/Prism/LSP.cpp | 30 +- sources/Prism/Main.cpp | 132 +- sources/Prism/Parsed.cpp | 53 + sources/Prism/Parsed.h | 9 +- sources/Prism/Parsing.cpp | 25 + sources/Prism/Prism.g4 | 12 +- sources/Prism/REFACTOR_TODO.md | 107 +- sources/Prism/Validate.cpp | 254 ++- sources/Prism/Validate.h | 17 + sources/Prism/defs/AssetRenderer.prism | 4 +- sources/Prism/defs/ddgi.prism | 30 +- sources/Prism/defs/pssm.prism | 4 +- sources/Prism/defs/raytracing.prism | 2 +- sources/Prism/defs/scene.prism | 4 +- sources/Prism/defs/voxel.prism | 22 +- sources/Prism/defs/vsm.prism | 22 +- sources/Prism/editor/gen_vs_extension.py | 22 +- sources/Prism/templates/cpp/pass.jinja | 16 +- .../FrameGraph/autogen/pass/DDGIProbeSelect.h | 28 +- .../FrameGraph/autogen/pass/DDGIProbeTrace.h | 4 +- .../autogen/pass/GBufferDownsampler.h | 32 +- .../FrameGraph/autogen/pass/IndirectRTXHalf.h | 4 +- .../FrameGraph/autogen/pass/RTXShadow.h | 4 +- .../autogen/pass/ReflectionRTXHalf.h | 8 +- .../autogen/pass/VSM_BlockerClassify.h | 12 +- .../autogen/pass/VSM_BlockerSearch.h | 12 +- .../autogen/pass/VSM_GatherDispatch.h | 4 +- .../FrameGraph/autogen/pass/VSM_HiZRebuild.h | 4 +- .../FrameGraph/autogen/pass/VSM_RenderPages.h | 8 +- workdir/shaders/autogen/CullingArgsReset.h | 35 - workdir/shaders/autogen/GraphInput.h | 36 - .../autogen/VSMBlockerClassifyInitDispatch.h | 35 - .../autogen/VSMSearchVerdictInitDispatch.h | 35 - .../shaders/autogen/tables/CullingArgsReset.h | 21 - .../autogen/tables/DeviceCapabilities.h | 16 - .../tables/VSMBlockerClassifyInitDispatch.h | 24 - .../tables/VSMSearchVerdictInitDispatch.h | 20 - 47 files changed, 1987 insertions(+), 1330 deletions(-) delete mode 100644 sources/HAL/autogen/slots/GraphInput.ixx delete mode 100644 workdir/shaders/autogen/CullingArgsReset.h delete mode 100644 workdir/shaders/autogen/GraphInput.h delete mode 100644 workdir/shaders/autogen/VSMBlockerClassifyInitDispatch.h delete mode 100644 workdir/shaders/autogen/VSMSearchVerdictInitDispatch.h delete mode 100644 workdir/shaders/autogen/tables/CullingArgsReset.h delete mode 100644 workdir/shaders/autogen/tables/DeviceCapabilities.h delete mode 100644 workdir/shaders/autogen/tables/VSMBlockerClassifyInitDispatch.h delete mode 100644 workdir/shaders/autogen/tables/VSMSearchVerdictInitDispatch.h diff --git a/overview/Prism.txt b/overview/Prism.txt index 67504cba2..8d2d65a6a 100644 --- a/overview/Prism.txt +++ b/overview/Prism.txt @@ -210,10 +210,14 @@ Shared C++ (enums.ixx) and HLSL (enums.h) enum. Usable as a field type and in conditions (ShadowSource::VSM). const DDGI_CascadeCount = 5; + const DDGI_ProbeCount = Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeCountY; const WG_TileSection = `8u + 256u * 256u * sizeof(Table::TileRecord)`; A named constant in C++ namespace Constants (Constants.ixx), in declaration -order, so a later raw value may reference an earlier one. +order. The value is an expression like a [Size] (literals, + - * / % and +parentheses, size functions) over consts declared EARLIER, as Constants::NAME; +a forward reference or anything that isn't a const is an error. Backticks +remain for what the expression language can't say (sizeof, a lambda). -------------------------------------------------------------------------------- @@ -371,9 +375,12 @@ Field options RenderTarget, DepthStencil, Static, Required, ExclusiveRead ...). A write flag makes it a write. [Size = ...] with [Always], CREATE the resource instead of just - needing it. Literal N (N×N texture or N-element - buffer), Owner::field (read from that context each - frame, e.g. ViewportContext::frame_size) or backticks. + needing it. A literal N (N×N texture or N-element + buffer), an Owner::field read from that context each + frame (ViewportContext::frame_size), or an expression + over those — see SIZE EXPRESSIONS below. + [Counted] the created buffer gets a counter + (StructuredDesc::counted). [Format = F] creation format (HAL::Format); with [Always], also means create. [MipCount = N], [ArrayCount = N] @@ -392,6 +399,11 @@ Field options [SkipEnablement] appended to [Always]'s flags (ResourceFlags::SkipEnablement). +[Always]/[RecreateFlags] values must be FrameGraph::ResourceFlags names and +[Format] a HAL::Format name (checked, with completion in VS). Prism reads both +lists straight from FrameGraph.Base.ixx and HAL.Format.ixx, so a value added to +either enum is accepted with no Prism change. + Pass options [Compute] may run on a compute queue (actually does only when the pipeline entry says [Async]). @@ -444,6 +456,51 @@ pass's enable decision reads (context_deps.h) — the basis for caching graph plans. A backtick condition works but makes that dependency set unknown. +-------------------------------------------------------------------------------- + SIZE EXPRESSIONS +-------------------------------------------------------------------------------- + +[Size], [ArrayCount] and [MipCount] accept an expression: literals, +Owner::field, Constants::NAME, + - * / % and parentheses, and these size +functions: + + tiles(v, n) how many n-sized tiles cover v, per component, rounded up + (renders to Math::DivideByMultiple; works on ivec2 or scalars) + area(v) element count of a grid of size v, x*y (Math::Area) + ivec2(w, h) a non-square 2D size + +A texture [Size] that is a single number, whether a literal or a const, is +square: [Size = Constants::VSM_PageSize] is VSM_PageSize x VSM_PageSize. +Prism tells the two apart from the terms: ivec2(...) and vector-typed struct +fields (int2 frame_size) make a 2D size, tiles() keeps its argument's shape, +and area() turns it back into a number. + + # texture with one texel per 16x16 screen tile + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 16)] + [Format = R8_UNORM] + Texture VSM_AmbiguousMask; + + # counted buffer with two entries per 16x16 screen tile + [Always = UnorderedAccess] [Size = 2 * area(tiles(ViewportContext::frame_size, 16))] + [Counted] + StructuredBuffer VSM_LitTiles; + + # half resolution + [Size = tiles(ViewportContext::frame_size, 2)] + + # square array texture sized by consts + [Size = Constants::VSM_PageSize] [Format = R32G32_FLOAT] + [ArrayCount = Constants::VSM_PhysicalPageCount] [MipCount = Constants::VSM_PyramidMipCount] + Texture VSM_PageHiZ; + +A buffer's size is an element count. Unlike a backtick, an expression is checked (unknown functions, +structs, fields and consts are errors with suggestions) and Prism records +which context fields it reads, so a resize correctly invalidates cached +graph plans. Backticks still work for anything the expression language can't +say; prefer extending it (size_functions() in Validate.cpp) over new +backticks. + + -------------------------------------------------------------------------------- PassView, Pipeline, rt -------------------------------------------------------------------------------- @@ -508,16 +565,19 @@ Install bin/editor/prism.vsix (built by "Visual Studio extension development" workload). It provides: - syntax highlighting (generated from Prism.g4: keywords, built-in types, - formats, options, user-declared names via the language server) with the - C++ grammar inside HLSL bodies + formats and [Always]/[RecreateFlags] flags in the #define colour, options, + user-declared names via the language server) with the C++ grammar inside + HLSL bodies - live errors in the Error List as you type, with quick fixes (Ctrl+.) - go-to-definition (F12): structs, fields, enum values, layouts/slots, passes, functions, and shader paths (opens the .hlsl) - hover: struct bodies, field types, function signatures (all overloads), where an option is accepted and which values are in use - - completion: Owner:: members, data. fields, option names valid at that - position, option values already used elsewhere, shader files inside - the quotes of `compute = "..."` + - completion: Owner:: members (Constants:: lists the consts), data. + fields, option names valid at that position, every ResourceFlags / + HAL::Format name for [Always]/[RecreateFlags]/[Format], other option + values already used elsewhere, shader files inside the quotes of + `compute = "..."` - outline (navigation bar) and Ctrl+T symbol search - Tools > Regenerate Prism code / the Prism toolbar @@ -553,15 +613,16 @@ Make a pass optional - Two structs on the same [Bind] slot overwrite each other in one draw — the symptom is geometry that draws but is invisible or wrong. -- A nested (non-[Bind]) struct whose ONLY field is a resource is dropped from - the generated struct without any error (REFACTOR_TODO item 9); give it a - leading plain field. - A PSO whose shader never touches its bound resources asserts (!slots.empty()) at startup rather than being a no-op. - A stale prismc.exe generates output that disagrees with the current templates: rebuild the Prism project after changing the generator. - A new generated file is invisible to the build until generate_project.bat - runs (the VS button detects this and offers to run it). + runs (the VS button detects this and offers to run it). The same goes for a + removed one: prismc deletes generated files it no longer produces (printed + as "removed stale ..."), and the projects still list them until regenerated. + Only files with the DO-NOT-EDIT banner are deleted, so a hand-written file + in an autogen/ directory is safe. - Backtick expressions and HLSL bodies are not checked by Prism: their errors surface as C++ compile errors or at shader compile time. diff --git a/sources/Core/Math/Types/Vectors.ixx b/sources/Core/Math/Types/Vectors.ixx index ad10605cf..c2b1ab277 100644 --- a/sources/Core/Math/Types/Vectors.ixx +++ b/sources/Core/Math/Types/Vectors.ixx @@ -449,6 +449,29 @@ export return v; } + namespace Math + { + // Per-component DivideByMultiple: how many n-sized tiles cover v in + // each dimension (rounding up). Same arithmetic as the scalar version. + template + Vector DivideByMultiple(Vector v, size_t n) + { + for (int i = 0; i < T::N; i++) + v[i] = static_cast((static_cast(v[i]) + n - 1) / n); + return v; + } + + // Element count of a grid of that size, e.g. tiles covering the screen. + template + size_t Area(const Vector& v) + { + size_t area = 1; + for (int i = 0; i < T::N; i++) + area *= static_cast(v[i]); + return area; + } + } + // Linear intERPolation template T lerp(T& p0, T& p1, float t) diff --git a/sources/HAL/autogen/slots/GraphInput.ixx b/sources/HAL/autogen/slots/GraphInput.ixx deleted file mode 100644 index 9cf126bcf..000000000 --- a/sources/HAL/autogen/slots/GraphInput.ixx +++ /dev/null @@ -1,23 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -export module HAL:Autogen.Slots.GraphInput; -import Core; -import :Autogen.Tables.GraphInput; -import :Autogen.Layouts.NoneLayout; -import :SIG; -import :Types; -import :Enums; -import :Slots; - -export namespace Slots -{ - struct GraphInput :public DataHolder - { - static constexpr SIG_TYPE TYPE = SIG_TYPE::Slot; - GraphInput() = default; - }; -} \ No newline at end of file diff --git a/sources/Prism/.antlr/Prism.interp b/sources/Prism/.antlr/Prism.interp index bd102a4c6..c156c6703 100644 --- a/sources/Prism/.antlr/Prism.interp +++ b/sources/Prism/.antlr/Prism.interp @@ -216,6 +216,8 @@ const_definition bind_option cond_expr cond_term +call +call_arg qualified_ref member_ref cond_op @@ -308,4 +310,4 @@ bool_type atn: -[4, 1, 103, 853, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 204, 8, 0, 10, 0, 12, 0, 207, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 219, 8, 2, 1, 2, 1, 2, 1, 2, 4, 2, 224, 8, 2, 11, 2, 12, 2, 225, 1, 2, 1, 2, 3, 2, 230, 8, 2, 1, 3, 4, 3, 233, 8, 3, 11, 3, 12, 3, 234, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 242, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 263, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 269, 8, 12, 10, 12, 12, 12, 272, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 280, 8, 14, 1, 14, 1, 14, 1, 15, 5, 15, 285, 8, 15, 10, 15, 12, 15, 288, 9, 15, 1, 15, 1, 15, 1, 15, 3, 15, 293, 8, 15, 1, 15, 1, 15, 3, 15, 297, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 5, 18, 312, 8, 18, 10, 18, 12, 18, 315, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 321, 8, 18, 1, 18, 1, 18, 1, 19, 5, 19, 326, 8, 19, 10, 19, 12, 19, 329, 9, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 5, 20, 337, 8, 20, 10, 20, 12, 20, 340, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 5, 22, 350, 8, 22, 10, 22, 12, 22, 353, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 5, 24, 365, 8, 24, 10, 24, 12, 24, 368, 9, 24, 1, 24, 3, 24, 371, 8, 24, 1, 24, 3, 24, 374, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 3, 30, 389, 8, 30, 1, 30, 1, 30, 5, 30, 393, 8, 30, 10, 30, 12, 30, 396, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 407, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 413, 8, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 425, 8, 36, 10, 36, 12, 36, 428, 9, 36, 1, 37, 1, 37, 1, 37, 3, 37, 433, 8, 37, 1, 38, 5, 38, 436, 8, 38, 10, 38, 12, 38, 439, 9, 38, 1, 39, 1, 39, 1, 39, 3, 39, 444, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 454, 8, 40, 1, 41, 5, 41, 457, 8, 41, 10, 41, 12, 41, 460, 9, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 468, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 477, 8, 42, 10, 42, 12, 42, 480, 9, 42, 1, 43, 1, 43, 1, 43, 1, 44, 5, 44, 486, 8, 44, 10, 44, 12, 44, 489, 9, 44, 1, 45, 5, 45, 492, 8, 45, 10, 45, 12, 45, 495, 9, 45, 1, 45, 1, 45, 1, 45, 3, 45, 500, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 3, 48, 517, 8, 48, 1, 49, 5, 49, 520, 8, 49, 10, 49, 12, 49, 523, 9, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 537, 8, 52, 10, 52, 12, 52, 540, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 5, 54, 550, 8, 54, 10, 54, 12, 54, 553, 9, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 564, 8, 55, 1, 56, 5, 56, 567, 8, 56, 10, 56, 12, 56, 570, 9, 56, 1, 57, 5, 57, 573, 8, 57, 10, 57, 12, 57, 576, 9, 57, 1, 57, 1, 57, 1, 57, 3, 57, 581, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 594, 8, 58, 1, 59, 5, 59, 597, 8, 59, 10, 59, 12, 59, 600, 9, 59, 1, 60, 5, 60, 603, 8, 60, 10, 60, 12, 60, 606, 9, 60, 1, 60, 1, 60, 1, 60, 3, 60, 611, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 3, 61, 619, 8, 61, 1, 62, 5, 62, 622, 8, 62, 10, 62, 12, 62, 625, 9, 62, 1, 63, 1, 63, 1, 63, 3, 63, 630, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 5, 66, 644, 8, 66, 10, 66, 12, 66, 647, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 3, 67, 657, 8, 67, 1, 68, 5, 68, 660, 8, 68, 10, 68, 12, 68, 663, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 676, 8, 70, 1, 71, 5, 71, 679, 8, 71, 10, 71, 12, 71, 682, 9, 71, 1, 72, 5, 72, 685, 8, 72, 10, 72, 12, 72, 688, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 693, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 3, 73, 702, 8, 73, 1, 74, 5, 74, 705, 8, 74, 10, 74, 12, 74, 708, 9, 74, 1, 75, 5, 75, 711, 8, 75, 10, 75, 12, 75, 714, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 719, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 3, 76, 727, 8, 76, 1, 77, 5, 77, 730, 8, 77, 10, 77, 12, 77, 733, 9, 77, 1, 78, 5, 78, 736, 8, 78, 10, 78, 12, 78, 739, 9, 78, 1, 78, 1, 78, 1, 78, 3, 78, 744, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 5, 79, 751, 8, 79, 10, 79, 12, 79, 754, 9, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 762, 8, 80, 1, 81, 5, 81, 765, 8, 81, 10, 81, 12, 81, 768, 9, 81, 1, 82, 5, 82, 771, 8, 82, 10, 82, 12, 82, 774, 9, 82, 1, 82, 1, 82, 1, 82, 3, 82, 779, 8, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 5, 83, 786, 8, 83, 10, 83, 12, 83, 789, 9, 83, 1, 83, 1, 83, 1, 83, 3, 83, 794, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 5, 84, 801, 8, 84, 10, 84, 12, 84, 804, 9, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 810, 8, 84, 1, 85, 5, 85, 813, 8, 85, 10, 85, 12, 85, 816, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 3, 87, 827, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 3, 88, 833, 8, 88, 1, 89, 5, 89, 836, 8, 89, 10, 89, 12, 89, 839, 9, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 18, 286, 313, 327, 338, 351, 426, 458, 493, 551, 574, 604, 645, 686, 712, 737, 752, 772, 787, 0, 94, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 0, 7, 4, 0, 45, 46, 48, 53, 59, 59, 64, 65, 2, 0, 92, 92, 95, 95, 1, 0, 64, 65, 1, 0, 8, 12, 1, 0, 13, 25, 1, 0, 26, 44, 1, 0, 70, 71, 878, 0, 205, 1, 0, 0, 0, 2, 210, 1, 0, 0, 0, 4, 229, 1, 0, 0, 0, 6, 232, 1, 0, 0, 0, 8, 241, 1, 0, 0, 0, 10, 243, 1, 0, 0, 0, 12, 247, 1, 0, 0, 0, 14, 251, 1, 0, 0, 0, 16, 253, 1, 0, 0, 0, 18, 255, 1, 0, 0, 0, 20, 257, 1, 0, 0, 0, 22, 260, 1, 0, 0, 0, 24, 264, 1, 0, 0, 0, 26, 275, 1, 0, 0, 0, 28, 277, 1, 0, 0, 0, 30, 286, 1, 0, 0, 0, 32, 300, 1, 0, 0, 0, 34, 304, 1, 0, 0, 0, 36, 313, 1, 0, 0, 0, 38, 327, 1, 0, 0, 0, 40, 338, 1, 0, 0, 0, 42, 346, 1, 0, 0, 0, 44, 351, 1, 0, 0, 0, 46, 359, 1, 0, 0, 0, 48, 361, 1, 0, 0, 0, 50, 375, 1, 0, 0, 0, 52, 377, 1, 0, 0, 0, 54, 379, 1, 0, 0, 0, 56, 381, 1, 0, 0, 0, 58, 383, 1, 0, 0, 0, 60, 385, 1, 0, 0, 0, 62, 406, 1, 0, 0, 0, 64, 412, 1, 0, 0, 0, 66, 414, 1, 0, 0, 0, 68, 416, 1, 0, 0, 0, 70, 418, 1, 0, 0, 0, 72, 420, 1, 0, 0, 0, 74, 432, 1, 0, 0, 0, 76, 437, 1, 0, 0, 0, 78, 440, 1, 0, 0, 0, 80, 453, 1, 0, 0, 0, 82, 458, 1, 0, 0, 0, 84, 478, 1, 0, 0, 0, 86, 481, 1, 0, 0, 0, 88, 487, 1, 0, 0, 0, 90, 493, 1, 0, 0, 0, 92, 505, 1, 0, 0, 0, 94, 509, 1, 0, 0, 0, 96, 516, 1, 0, 0, 0, 98, 521, 1, 0, 0, 0, 100, 524, 1, 0, 0, 0, 102, 530, 1, 0, 0, 0, 104, 532, 1, 0, 0, 0, 106, 543, 1, 0, 0, 0, 108, 551, 1, 0, 0, 0, 110, 563, 1, 0, 0, 0, 112, 568, 1, 0, 0, 0, 114, 574, 1, 0, 0, 0, 116, 593, 1, 0, 0, 0, 118, 598, 1, 0, 0, 0, 120, 604, 1, 0, 0, 0, 122, 618, 1, 0, 0, 0, 124, 623, 1, 0, 0, 0, 126, 626, 1, 0, 0, 0, 128, 635, 1, 0, 0, 0, 130, 637, 1, 0, 0, 0, 132, 645, 1, 0, 0, 0, 134, 656, 1, 0, 0, 0, 136, 661, 1, 0, 0, 0, 138, 664, 1, 0, 0, 0, 140, 675, 1, 0, 0, 0, 142, 680, 1, 0, 0, 0, 144, 686, 1, 0, 0, 0, 146, 701, 1, 0, 0, 0, 148, 706, 1, 0, 0, 0, 150, 712, 1, 0, 0, 0, 152, 726, 1, 0, 0, 0, 154, 731, 1, 0, 0, 0, 156, 737, 1, 0, 0, 0, 158, 752, 1, 0, 0, 0, 160, 761, 1, 0, 0, 0, 162, 766, 1, 0, 0, 0, 164, 772, 1, 0, 0, 0, 166, 787, 1, 0, 0, 0, 168, 809, 1, 0, 0, 0, 170, 814, 1, 0, 0, 0, 172, 817, 1, 0, 0, 0, 174, 823, 1, 0, 0, 0, 176, 832, 1, 0, 0, 0, 178, 837, 1, 0, 0, 0, 180, 840, 1, 0, 0, 0, 182, 846, 1, 0, 0, 0, 184, 848, 1, 0, 0, 0, 186, 850, 1, 0, 0, 0, 188, 204, 3, 78, 39, 0, 189, 204, 3, 90, 45, 0, 190, 204, 3, 100, 50, 0, 191, 204, 3, 144, 72, 0, 192, 204, 3, 114, 57, 0, 193, 204, 3, 120, 60, 0, 194, 204, 3, 126, 63, 0, 195, 204, 3, 150, 75, 0, 196, 204, 3, 156, 78, 0, 197, 204, 3, 166, 83, 0, 198, 204, 3, 164, 82, 0, 199, 204, 3, 172, 86, 0, 200, 204, 3, 180, 90, 0, 201, 204, 3, 2, 1, 0, 202, 204, 5, 97, 0, 0, 203, 188, 1, 0, 0, 0, 203, 189, 1, 0, 0, 0, 203, 190, 1, 0, 0, 0, 203, 191, 1, 0, 0, 0, 203, 192, 1, 0, 0, 0, 203, 193, 1, 0, 0, 0, 203, 194, 1, 0, 0, 0, 203, 195, 1, 0, 0, 0, 203, 196, 1, 0, 0, 0, 203, 197, 1, 0, 0, 0, 203, 198, 1, 0, 0, 0, 203, 199, 1, 0, 0, 0, 203, 200, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 208, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 209, 5, 0, 0, 1, 209, 1, 1, 0, 0, 0, 210, 211, 5, 1, 0, 0, 211, 212, 3, 52, 26, 0, 212, 213, 3, 20, 10, 0, 213, 214, 5, 60, 0, 0, 214, 3, 1, 0, 0, 0, 215, 216, 3, 56, 28, 0, 216, 217, 5, 2, 0, 0, 217, 219, 1, 0, 0, 0, 218, 215, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 223, 3, 16, 8, 0, 221, 222, 5, 47, 0, 0, 222, 224, 3, 16, 8, 0, 223, 221, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 230, 1, 0, 0, 0, 227, 230, 3, 18, 9, 0, 228, 230, 3, 6, 3, 0, 229, 218, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 5, 1, 0, 0, 0, 231, 233, 3, 8, 4, 0, 232, 231, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 7, 1, 0, 0, 0, 236, 242, 3, 10, 5, 0, 237, 242, 3, 60, 30, 0, 238, 242, 3, 12, 6, 0, 239, 242, 3, 62, 31, 0, 240, 242, 3, 14, 7, 0, 241, 236, 1, 0, 0, 0, 241, 237, 1, 0, 0, 0, 241, 238, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 9, 1, 0, 0, 0, 243, 244, 3, 56, 28, 0, 244, 245, 5, 2, 0, 0, 245, 246, 3, 62, 31, 0, 246, 11, 1, 0, 0, 0, 247, 248, 3, 52, 26, 0, 248, 249, 5, 62, 0, 0, 249, 250, 3, 52, 26, 0, 250, 13, 1, 0, 0, 0, 251, 252, 7, 0, 0, 0, 252, 15, 1, 0, 0, 0, 253, 254, 3, 62, 31, 0, 254, 17, 1, 0, 0, 0, 255, 256, 5, 96, 0, 0, 256, 19, 1, 0, 0, 0, 257, 258, 5, 63, 0, 0, 258, 259, 3, 4, 2, 0, 259, 21, 1, 0, 0, 0, 260, 262, 3, 52, 26, 0, 261, 263, 3, 20, 10, 0, 262, 261, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 23, 1, 0, 0, 0, 264, 265, 5, 68, 0, 0, 265, 270, 3, 22, 11, 0, 266, 267, 5, 3, 0, 0, 267, 269, 3, 22, 11, 0, 268, 266, 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 274, 5, 69, 0, 0, 274, 25, 1, 0, 0, 0, 275, 276, 5, 93, 0, 0, 276, 27, 1, 0, 0, 0, 277, 279, 5, 68, 0, 0, 278, 280, 3, 26, 13, 0, 279, 278, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 282, 5, 69, 0, 0, 282, 29, 1, 0, 0, 0, 283, 285, 3, 24, 12, 0, 284, 283, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 287, 289, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 290, 3, 66, 33, 0, 290, 292, 3, 52, 26, 0, 291, 293, 3, 28, 14, 0, 292, 291, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, 0, 294, 295, 5, 63, 0, 0, 295, 297, 3, 62, 31, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 5, 60, 0, 0, 299, 31, 1, 0, 0, 0, 300, 301, 5, 86, 0, 0, 301, 302, 3, 52, 26, 0, 302, 303, 5, 60, 0, 0, 303, 33, 1, 0, 0, 0, 304, 305, 5, 4, 0, 0, 305, 306, 3, 52, 26, 0, 306, 307, 5, 63, 0, 0, 307, 308, 3, 62, 31, 0, 308, 309, 5, 60, 0, 0, 309, 35, 1, 0, 0, 0, 310, 312, 3, 24, 12, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 5, 0, 0, 317, 320, 3, 52, 26, 0, 318, 319, 5, 63, 0, 0, 319, 321, 3, 104, 52, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 323, 5, 60, 0, 0, 323, 37, 1, 0, 0, 0, 324, 326, 3, 24, 12, 0, 325, 324, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 330, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 331, 5, 6, 0, 0, 331, 332, 5, 63, 0, 0, 332, 333, 3, 104, 52, 0, 333, 334, 5, 60, 0, 0, 334, 39, 1, 0, 0, 0, 335, 337, 3, 24, 12, 0, 336, 335, 1, 0, 0, 0, 337, 340, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 342, 5, 7, 0, 0, 342, 343, 5, 63, 0, 0, 343, 344, 3, 104, 52, 0, 344, 345, 5, 60, 0, 0, 345, 41, 1, 0, 0, 0, 346, 347, 5, 99, 0, 0, 347, 43, 1, 0, 0, 0, 348, 350, 3, 24, 12, 0, 349, 348, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 355, 3, 184, 92, 0, 355, 356, 5, 63, 0, 0, 356, 357, 3, 62, 31, 0, 357, 358, 5, 60, 0, 0, 358, 45, 1, 0, 0, 0, 359, 360, 5, 92, 0, 0, 360, 47, 1, 0, 0, 0, 361, 370, 3, 46, 23, 0, 362, 366, 5, 51, 0, 0, 363, 365, 3, 58, 29, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 371, 5, 50, 0, 0, 370, 362, 1, 0, 0, 0, 370, 371, 1, 0, 0, 0, 371, 373, 1, 0, 0, 0, 372, 374, 3, 42, 21, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 49, 1, 0, 0, 0, 375, 376, 5, 92, 0, 0, 376, 51, 1, 0, 0, 0, 377, 378, 5, 92, 0, 0, 378, 53, 1, 0, 0, 0, 379, 380, 5, 92, 0, 0, 380, 55, 1, 0, 0, 0, 381, 382, 5, 92, 0, 0, 382, 57, 1, 0, 0, 0, 383, 384, 5, 92, 0, 0, 384, 59, 1, 0, 0, 0, 385, 386, 5, 92, 0, 0, 386, 388, 5, 64, 0, 0, 387, 389, 3, 64, 32, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 394, 1, 0, 0, 0, 390, 391, 5, 3, 0, 0, 391, 393, 3, 64, 32, 0, 392, 390, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 397, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 398, 5, 65, 0, 0, 398, 61, 1, 0, 0, 0, 399, 407, 3, 182, 91, 0, 400, 407, 5, 92, 0, 0, 401, 407, 5, 93, 0, 0, 402, 407, 5, 94, 0, 0, 403, 407, 3, 186, 93, 0, 404, 407, 3, 60, 30, 0, 405, 407, 3, 104, 52, 0, 406, 399, 1, 0, 0, 0, 406, 400, 1, 0, 0, 0, 406, 401, 1, 0, 0, 0, 406, 402, 1, 0, 0, 0, 406, 403, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 405, 1, 0, 0, 0, 407, 63, 1, 0, 0, 0, 408, 413, 5, 92, 0, 0, 409, 413, 5, 93, 0, 0, 410, 413, 5, 94, 0, 0, 411, 413, 3, 186, 93, 0, 412, 408, 1, 0, 0, 0, 412, 409, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 411, 1, 0, 0, 0, 413, 65, 1, 0, 0, 0, 414, 415, 3, 48, 24, 0, 415, 67, 1, 0, 0, 0, 416, 417, 5, 103, 0, 0, 417, 69, 1, 0, 0, 0, 418, 419, 7, 1, 0, 0, 419, 71, 1, 0, 0, 0, 420, 421, 5, 61, 0, 0, 421, 426, 3, 50, 25, 0, 422, 423, 5, 3, 0, 0, 423, 425, 3, 50, 25, 0, 424, 422, 1, 0, 0, 0, 425, 428, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 427, 73, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 429, 433, 3, 32, 16, 0, 430, 433, 3, 34, 17, 0, 431, 433, 5, 97, 0, 0, 432, 429, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 432, 431, 1, 0, 0, 0, 433, 75, 1, 0, 0, 0, 434, 436, 3, 74, 37, 0, 435, 434, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 77, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 441, 5, 73, 0, 0, 441, 443, 3, 52, 26, 0, 442, 444, 3, 72, 36, 0, 443, 442, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 446, 5, 66, 0, 0, 446, 447, 3, 76, 38, 0, 447, 448, 5, 67, 0, 0, 448, 79, 1, 0, 0, 0, 449, 454, 3, 30, 15, 0, 450, 454, 3, 82, 41, 0, 451, 454, 3, 68, 34, 0, 452, 454, 5, 97, 0, 0, 453, 449, 1, 0, 0, 0, 453, 450, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 81, 1, 0, 0, 0, 455, 457, 3, 24, 12, 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 461, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 462, 3, 66, 33, 0, 462, 463, 3, 52, 26, 0, 463, 464, 5, 64, 0, 0, 464, 465, 3, 84, 42, 0, 465, 467, 5, 65, 0, 0, 466, 468, 3, 86, 43, 0, 467, 466, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 5, 100, 0, 0, 470, 83, 1, 0, 0, 0, 471, 472, 5, 64, 0, 0, 472, 473, 3, 84, 42, 0, 473, 474, 5, 65, 0, 0, 474, 477, 1, 0, 0, 0, 475, 477, 8, 2, 0, 0, 476, 471, 1, 0, 0, 0, 476, 475, 1, 0, 0, 0, 477, 480, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 85, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 482, 5, 61, 0, 0, 482, 483, 5, 92, 0, 0, 483, 87, 1, 0, 0, 0, 484, 486, 3, 80, 40, 0, 485, 484, 1, 0, 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 89, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 492, 3, 24, 12, 0, 491, 490, 1, 0, 0, 0, 492, 495, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 496, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 496, 497, 5, 74, 0, 0, 497, 499, 3, 52, 26, 0, 498, 500, 3, 72, 36, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 5, 66, 0, 0, 502, 503, 3, 88, 44, 0, 503, 504, 5, 67, 0, 0, 504, 91, 1, 0, 0, 0, 505, 506, 3, 66, 33, 0, 506, 507, 3, 52, 26, 0, 507, 508, 5, 60, 0, 0, 508, 93, 1, 0, 0, 0, 509, 510, 5, 89, 0, 0, 510, 511, 3, 52, 26, 0, 511, 512, 5, 60, 0, 0, 512, 95, 1, 0, 0, 0, 513, 517, 3, 92, 46, 0, 514, 517, 3, 94, 47, 0, 515, 517, 5, 97, 0, 0, 516, 513, 1, 0, 0, 0, 516, 514, 1, 0, 0, 0, 516, 515, 1, 0, 0, 0, 517, 97, 1, 0, 0, 0, 518, 520, 3, 96, 48, 0, 519, 518, 1, 0, 0, 0, 520, 523, 1, 0, 0, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 99, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 524, 525, 5, 87, 0, 0, 525, 526, 3, 52, 26, 0, 526, 527, 5, 66, 0, 0, 527, 528, 3, 98, 49, 0, 528, 529, 5, 67, 0, 0, 529, 101, 1, 0, 0, 0, 530, 531, 3, 62, 31, 0, 531, 103, 1, 0, 0, 0, 532, 533, 5, 66, 0, 0, 533, 538, 3, 102, 51, 0, 534, 535, 5, 3, 0, 0, 535, 537, 3, 102, 51, 0, 536, 534, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 541, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 542, 5, 67, 0, 0, 542, 105, 1, 0, 0, 0, 543, 544, 5, 90, 0, 0, 544, 545, 5, 63, 0, 0, 545, 546, 3, 52, 26, 0, 546, 547, 5, 60, 0, 0, 547, 107, 1, 0, 0, 0, 548, 550, 3, 24, 12, 0, 549, 548, 1, 0, 0, 0, 550, 553, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 552, 554, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 554, 555, 3, 182, 91, 0, 555, 556, 5, 63, 0, 0, 556, 557, 3, 70, 35, 0, 557, 558, 5, 60, 0, 0, 558, 109, 1, 0, 0, 0, 559, 564, 3, 106, 53, 0, 560, 564, 3, 108, 54, 0, 561, 564, 3, 36, 18, 0, 562, 564, 5, 97, 0, 0, 563, 559, 1, 0, 0, 0, 563, 560, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 563, 562, 1, 0, 0, 0, 564, 111, 1, 0, 0, 0, 565, 567, 3, 110, 55, 0, 566, 565, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 113, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 573, 3, 24, 12, 0, 572, 571, 1, 0, 0, 0, 573, 576, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 577, 578, 5, 75, 0, 0, 578, 580, 3, 52, 26, 0, 579, 581, 3, 72, 36, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 583, 5, 66, 0, 0, 583, 584, 3, 112, 56, 0, 584, 585, 5, 67, 0, 0, 585, 115, 1, 0, 0, 0, 586, 594, 3, 106, 53, 0, 587, 594, 3, 108, 54, 0, 588, 594, 3, 36, 18, 0, 589, 594, 3, 38, 19, 0, 590, 594, 3, 40, 20, 0, 591, 594, 3, 44, 22, 0, 592, 594, 5, 97, 0, 0, 593, 586, 1, 0, 0, 0, 593, 587, 1, 0, 0, 0, 593, 588, 1, 0, 0, 0, 593, 589, 1, 0, 0, 0, 593, 590, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 592, 1, 0, 0, 0, 594, 117, 1, 0, 0, 0, 595, 597, 3, 116, 58, 0, 596, 595, 1, 0, 0, 0, 597, 600, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 119, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 601, 603, 3, 24, 12, 0, 602, 601, 1, 0, 0, 0, 603, 606, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 605, 607, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 607, 608, 5, 76, 0, 0, 608, 610, 3, 52, 26, 0, 609, 611, 3, 72, 36, 0, 610, 609, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 613, 5, 66, 0, 0, 613, 614, 3, 118, 59, 0, 614, 615, 5, 67, 0, 0, 615, 121, 1, 0, 0, 0, 616, 619, 3, 106, 53, 0, 617, 619, 5, 97, 0, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 123, 1, 0, 0, 0, 620, 622, 3, 122, 61, 0, 621, 620, 1, 0, 0, 0, 622, 625, 1, 0, 0, 0, 623, 621, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 125, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 626, 627, 5, 77, 0, 0, 627, 629, 3, 52, 26, 0, 628, 630, 3, 72, 36, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 5, 66, 0, 0, 632, 633, 3, 124, 62, 0, 633, 634, 5, 67, 0, 0, 634, 127, 1, 0, 0, 0, 635, 636, 7, 3, 0, 0, 636, 129, 1, 0, 0, 0, 637, 638, 3, 128, 64, 0, 638, 639, 5, 63, 0, 0, 639, 640, 3, 62, 31, 0, 640, 641, 5, 60, 0, 0, 641, 131, 1, 0, 0, 0, 642, 644, 3, 24, 12, 0, 643, 642, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 648, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 649, 5, 80, 0, 0, 649, 650, 3, 66, 33, 0, 650, 651, 3, 52, 26, 0, 651, 652, 5, 60, 0, 0, 652, 133, 1, 0, 0, 0, 653, 657, 3, 130, 65, 0, 654, 657, 3, 132, 66, 0, 655, 657, 5, 97, 0, 0, 656, 653, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 656, 655, 1, 0, 0, 0, 657, 135, 1, 0, 0, 0, 658, 660, 3, 134, 67, 0, 659, 658, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 137, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 665, 5, 79, 0, 0, 665, 666, 3, 52, 26, 0, 666, 667, 5, 66, 0, 0, 667, 668, 3, 136, 68, 0, 668, 669, 5, 67, 0, 0, 669, 139, 1, 0, 0, 0, 670, 676, 3, 106, 53, 0, 671, 676, 3, 108, 54, 0, 672, 676, 3, 36, 18, 0, 673, 676, 3, 138, 69, 0, 674, 676, 5, 97, 0, 0, 675, 670, 1, 0, 0, 0, 675, 671, 1, 0, 0, 0, 675, 672, 1, 0, 0, 0, 675, 673, 1, 0, 0, 0, 675, 674, 1, 0, 0, 0, 676, 141, 1, 0, 0, 0, 677, 679, 3, 140, 70, 0, 678, 677, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 143, 1, 0, 0, 0, 682, 680, 1, 0, 0, 0, 683, 685, 3, 24, 12, 0, 684, 683, 1, 0, 0, 0, 685, 688, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 687, 689, 1, 0, 0, 0, 688, 686, 1, 0, 0, 0, 689, 690, 5, 78, 0, 0, 690, 692, 3, 52, 26, 0, 691, 693, 3, 72, 36, 0, 692, 691, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 5, 66, 0, 0, 695, 696, 3, 142, 71, 0, 696, 697, 5, 67, 0, 0, 697, 145, 1, 0, 0, 0, 698, 702, 3, 108, 54, 0, 699, 702, 5, 97, 0, 0, 700, 702, 3, 44, 22, 0, 701, 698, 1, 0, 0, 0, 701, 699, 1, 0, 0, 0, 701, 700, 1, 0, 0, 0, 702, 147, 1, 0, 0, 0, 703, 705, 3, 146, 73, 0, 704, 703, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 149, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 711, 3, 24, 12, 0, 710, 709, 1, 0, 0, 0, 711, 714, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 713, 715, 1, 0, 0, 0, 714, 712, 1, 0, 0, 0, 715, 716, 5, 82, 0, 0, 716, 718, 3, 52, 26, 0, 717, 719, 3, 72, 36, 0, 718, 717, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 5, 66, 0, 0, 721, 722, 3, 148, 74, 0, 722, 723, 5, 67, 0, 0, 723, 151, 1, 0, 0, 0, 724, 727, 3, 108, 54, 0, 725, 727, 5, 97, 0, 0, 726, 724, 1, 0, 0, 0, 726, 725, 1, 0, 0, 0, 727, 153, 1, 0, 0, 0, 728, 730, 3, 152, 76, 0, 729, 728, 1, 0, 0, 0, 730, 733, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 155, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 734, 736, 3, 24, 12, 0, 735, 734, 1, 0, 0, 0, 736, 739, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 738, 740, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 740, 741, 5, 81, 0, 0, 741, 743, 3, 52, 26, 0, 742, 744, 3, 72, 36, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 746, 5, 66, 0, 0, 746, 747, 3, 154, 77, 0, 747, 748, 5, 67, 0, 0, 748, 157, 1, 0, 0, 0, 749, 751, 3, 24, 12, 0, 750, 749, 1, 0, 0, 0, 751, 754, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 752, 750, 1, 0, 0, 0, 753, 755, 1, 0, 0, 0, 754, 752, 1, 0, 0, 0, 755, 756, 3, 66, 33, 0, 756, 757, 3, 52, 26, 0, 757, 758, 5, 60, 0, 0, 758, 159, 1, 0, 0, 0, 759, 762, 3, 158, 79, 0, 760, 762, 5, 97, 0, 0, 761, 759, 1, 0, 0, 0, 761, 760, 1, 0, 0, 0, 762, 161, 1, 0, 0, 0, 763, 765, 3, 160, 80, 0, 764, 763, 1, 0, 0, 0, 765, 768, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 163, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 769, 771, 3, 24, 12, 0, 770, 769, 1, 0, 0, 0, 771, 774, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 773, 775, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 775, 776, 5, 84, 0, 0, 776, 778, 3, 52, 26, 0, 777, 779, 3, 72, 36, 0, 778, 777, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 5, 66, 0, 0, 781, 782, 3, 162, 81, 0, 782, 783, 5, 67, 0, 0, 783, 165, 1, 0, 0, 0, 784, 786, 3, 24, 12, 0, 785, 784, 1, 0, 0, 0, 786, 789, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 788, 790, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 791, 5, 83, 0, 0, 791, 793, 3, 52, 26, 0, 792, 794, 3, 72, 36, 0, 793, 792, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 796, 5, 66, 0, 0, 796, 797, 3, 162, 81, 0, 797, 798, 5, 67, 0, 0, 798, 167, 1, 0, 0, 0, 799, 801, 3, 24, 12, 0, 800, 799, 1, 0, 0, 0, 801, 804, 1, 0, 0, 0, 802, 800, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 805, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 805, 806, 3, 52, 26, 0, 806, 807, 5, 60, 0, 0, 807, 810, 1, 0, 0, 0, 808, 810, 5, 97, 0, 0, 809, 802, 1, 0, 0, 0, 809, 808, 1, 0, 0, 0, 810, 169, 1, 0, 0, 0, 811, 813, 3, 168, 84, 0, 812, 811, 1, 0, 0, 0, 813, 816, 1, 0, 0, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 171, 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 817, 818, 5, 85, 0, 0, 818, 819, 3, 52, 26, 0, 819, 820, 5, 66, 0, 0, 820, 821, 3, 170, 85, 0, 821, 822, 5, 67, 0, 0, 822, 173, 1, 0, 0, 0, 823, 826, 3, 52, 26, 0, 824, 825, 5, 63, 0, 0, 825, 827, 3, 62, 31, 0, 826, 824, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 5, 60, 0, 0, 829, 175, 1, 0, 0, 0, 830, 833, 3, 174, 87, 0, 831, 833, 5, 97, 0, 0, 832, 830, 1, 0, 0, 0, 832, 831, 1, 0, 0, 0, 833, 177, 1, 0, 0, 0, 834, 836, 3, 176, 88, 0, 835, 834, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 179, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 91, 0, 0, 841, 842, 3, 52, 26, 0, 842, 843, 5, 66, 0, 0, 843, 844, 3, 178, 89, 0, 844, 845, 5, 67, 0, 0, 845, 181, 1, 0, 0, 0, 846, 847, 7, 4, 0, 0, 847, 183, 1, 0, 0, 0, 848, 849, 7, 5, 0, 0, 849, 185, 1, 0, 0, 0, 850, 851, 7, 6, 0, 0, 851, 187, 1, 0, 0, 0, 80, 203, 205, 218, 225, 229, 234, 241, 262, 270, 279, 286, 292, 296, 313, 320, 327, 338, 351, 366, 370, 373, 388, 394, 406, 412, 426, 432, 437, 443, 453, 458, 467, 476, 478, 487, 493, 499, 516, 521, 538, 551, 563, 568, 574, 580, 593, 598, 604, 610, 618, 623, 629, 645, 656, 661, 675, 680, 686, 692, 701, 706, 712, 718, 726, 731, 737, 743, 752, 761, 766, 772, 778, 787, 793, 802, 809, 814, 826, 832, 837] \ No newline at end of file +[4, 1, 103, 875, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 208, 8, 0, 10, 0, 12, 0, 211, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 3, 2, 223, 8, 2, 1, 2, 1, 2, 1, 2, 4, 2, 228, 8, 2, 11, 2, 12, 2, 229, 1, 2, 1, 2, 3, 2, 234, 8, 2, 1, 3, 4, 3, 237, 8, 3, 11, 3, 12, 3, 238, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 247, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 254, 8, 5, 10, 5, 12, 5, 257, 9, 5, 1, 5, 1, 5, 1, 6, 4, 6, 262, 8, 6, 11, 6, 12, 6, 263, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 3, 13, 285, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 291, 8, 14, 10, 14, 12, 14, 294, 9, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 302, 8, 16, 1, 16, 1, 16, 1, 17, 5, 17, 307, 8, 17, 10, 17, 12, 17, 310, 9, 17, 1, 17, 1, 17, 1, 17, 3, 17, 315, 8, 17, 1, 17, 1, 17, 3, 17, 319, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 5, 20, 334, 8, 20, 10, 20, 12, 20, 337, 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 343, 8, 20, 1, 20, 1, 20, 1, 21, 5, 21, 348, 8, 21, 10, 21, 12, 21, 351, 9, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 5, 22, 359, 8, 22, 10, 22, 12, 22, 362, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 5, 24, 372, 8, 24, 10, 24, 12, 24, 375, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 5, 26, 387, 8, 26, 10, 26, 12, 26, 390, 9, 26, 1, 26, 3, 26, 393, 8, 26, 1, 26, 3, 26, 396, 8, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 3, 32, 411, 8, 32, 1, 32, 1, 32, 5, 32, 415, 8, 32, 10, 32, 12, 32, 418, 9, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 429, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 435, 8, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 447, 8, 38, 10, 38, 12, 38, 450, 9, 38, 1, 39, 1, 39, 1, 39, 3, 39, 455, 8, 39, 1, 40, 5, 40, 458, 8, 40, 10, 40, 12, 40, 461, 9, 40, 1, 41, 1, 41, 1, 41, 3, 41, 466, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 476, 8, 42, 1, 43, 5, 43, 479, 8, 43, 10, 43, 12, 43, 482, 9, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 490, 8, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 499, 8, 44, 10, 44, 12, 44, 502, 9, 44, 1, 45, 1, 45, 1, 45, 1, 46, 5, 46, 508, 8, 46, 10, 46, 12, 46, 511, 9, 46, 1, 47, 5, 47, 514, 8, 47, 10, 47, 12, 47, 517, 9, 47, 1, 47, 1, 47, 1, 47, 3, 47, 522, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 539, 8, 50, 1, 51, 5, 51, 542, 8, 51, 10, 51, 12, 51, 545, 9, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 559, 8, 54, 10, 54, 12, 54, 562, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 5, 56, 572, 8, 56, 10, 56, 12, 56, 575, 9, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 586, 8, 57, 1, 58, 5, 58, 589, 8, 58, 10, 58, 12, 58, 592, 9, 58, 1, 59, 5, 59, 595, 8, 59, 10, 59, 12, 59, 598, 9, 59, 1, 59, 1, 59, 1, 59, 3, 59, 603, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 616, 8, 60, 1, 61, 5, 61, 619, 8, 61, 10, 61, 12, 61, 622, 9, 61, 1, 62, 5, 62, 625, 8, 62, 10, 62, 12, 62, 628, 9, 62, 1, 62, 1, 62, 1, 62, 3, 62, 633, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 3, 63, 641, 8, 63, 1, 64, 5, 64, 644, 8, 64, 10, 64, 12, 64, 647, 9, 64, 1, 65, 1, 65, 1, 65, 3, 65, 652, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 5, 68, 666, 8, 68, 10, 68, 12, 68, 669, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 679, 8, 69, 1, 70, 5, 70, 682, 8, 70, 10, 70, 12, 70, 685, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 698, 8, 72, 1, 73, 5, 73, 701, 8, 73, 10, 73, 12, 73, 704, 9, 73, 1, 74, 5, 74, 707, 8, 74, 10, 74, 12, 74, 710, 9, 74, 1, 74, 1, 74, 1, 74, 3, 74, 715, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 3, 75, 724, 8, 75, 1, 76, 5, 76, 727, 8, 76, 10, 76, 12, 76, 730, 9, 76, 1, 77, 5, 77, 733, 8, 77, 10, 77, 12, 77, 736, 9, 77, 1, 77, 1, 77, 1, 77, 3, 77, 741, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 749, 8, 78, 1, 79, 5, 79, 752, 8, 79, 10, 79, 12, 79, 755, 9, 79, 1, 80, 5, 80, 758, 8, 80, 10, 80, 12, 80, 761, 9, 80, 1, 80, 1, 80, 1, 80, 3, 80, 766, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 5, 81, 773, 8, 81, 10, 81, 12, 81, 776, 9, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 784, 8, 82, 1, 83, 5, 83, 787, 8, 83, 10, 83, 12, 83, 790, 9, 83, 1, 84, 5, 84, 793, 8, 84, 10, 84, 12, 84, 796, 9, 84, 1, 84, 1, 84, 1, 84, 3, 84, 801, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 5, 85, 808, 8, 85, 10, 85, 12, 85, 811, 9, 85, 1, 85, 1, 85, 1, 85, 3, 85, 816, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 5, 86, 823, 8, 86, 10, 86, 12, 86, 826, 9, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 832, 8, 86, 1, 87, 5, 87, 835, 8, 87, 10, 87, 12, 87, 838, 9, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 3, 89, 849, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 3, 90, 855, 8, 90, 1, 91, 5, 91, 858, 8, 91, 10, 91, 12, 91, 861, 9, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 18, 308, 335, 349, 360, 373, 448, 480, 515, 573, 596, 626, 667, 708, 734, 759, 774, 794, 809, 0, 96, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 0, 7, 5, 0, 45, 46, 48, 57, 59, 59, 64, 65, 99, 99, 2, 0, 92, 92, 95, 95, 1, 0, 64, 65, 1, 0, 8, 12, 1, 0, 13, 25, 1, 0, 26, 44, 1, 0, 70, 71, 901, 0, 209, 1, 0, 0, 0, 2, 214, 1, 0, 0, 0, 4, 233, 1, 0, 0, 0, 6, 236, 1, 0, 0, 0, 8, 246, 1, 0, 0, 0, 10, 248, 1, 0, 0, 0, 12, 261, 1, 0, 0, 0, 14, 265, 1, 0, 0, 0, 16, 269, 1, 0, 0, 0, 18, 273, 1, 0, 0, 0, 20, 275, 1, 0, 0, 0, 22, 277, 1, 0, 0, 0, 24, 279, 1, 0, 0, 0, 26, 282, 1, 0, 0, 0, 28, 286, 1, 0, 0, 0, 30, 297, 1, 0, 0, 0, 32, 299, 1, 0, 0, 0, 34, 308, 1, 0, 0, 0, 36, 322, 1, 0, 0, 0, 38, 326, 1, 0, 0, 0, 40, 335, 1, 0, 0, 0, 42, 349, 1, 0, 0, 0, 44, 360, 1, 0, 0, 0, 46, 368, 1, 0, 0, 0, 48, 373, 1, 0, 0, 0, 50, 381, 1, 0, 0, 0, 52, 383, 1, 0, 0, 0, 54, 397, 1, 0, 0, 0, 56, 399, 1, 0, 0, 0, 58, 401, 1, 0, 0, 0, 60, 403, 1, 0, 0, 0, 62, 405, 1, 0, 0, 0, 64, 407, 1, 0, 0, 0, 66, 428, 1, 0, 0, 0, 68, 434, 1, 0, 0, 0, 70, 436, 1, 0, 0, 0, 72, 438, 1, 0, 0, 0, 74, 440, 1, 0, 0, 0, 76, 442, 1, 0, 0, 0, 78, 454, 1, 0, 0, 0, 80, 459, 1, 0, 0, 0, 82, 462, 1, 0, 0, 0, 84, 475, 1, 0, 0, 0, 86, 480, 1, 0, 0, 0, 88, 500, 1, 0, 0, 0, 90, 503, 1, 0, 0, 0, 92, 509, 1, 0, 0, 0, 94, 515, 1, 0, 0, 0, 96, 527, 1, 0, 0, 0, 98, 531, 1, 0, 0, 0, 100, 538, 1, 0, 0, 0, 102, 543, 1, 0, 0, 0, 104, 546, 1, 0, 0, 0, 106, 552, 1, 0, 0, 0, 108, 554, 1, 0, 0, 0, 110, 565, 1, 0, 0, 0, 112, 573, 1, 0, 0, 0, 114, 585, 1, 0, 0, 0, 116, 590, 1, 0, 0, 0, 118, 596, 1, 0, 0, 0, 120, 615, 1, 0, 0, 0, 122, 620, 1, 0, 0, 0, 124, 626, 1, 0, 0, 0, 126, 640, 1, 0, 0, 0, 128, 645, 1, 0, 0, 0, 130, 648, 1, 0, 0, 0, 132, 657, 1, 0, 0, 0, 134, 659, 1, 0, 0, 0, 136, 667, 1, 0, 0, 0, 138, 678, 1, 0, 0, 0, 140, 683, 1, 0, 0, 0, 142, 686, 1, 0, 0, 0, 144, 697, 1, 0, 0, 0, 146, 702, 1, 0, 0, 0, 148, 708, 1, 0, 0, 0, 150, 723, 1, 0, 0, 0, 152, 728, 1, 0, 0, 0, 154, 734, 1, 0, 0, 0, 156, 748, 1, 0, 0, 0, 158, 753, 1, 0, 0, 0, 160, 759, 1, 0, 0, 0, 162, 774, 1, 0, 0, 0, 164, 783, 1, 0, 0, 0, 166, 788, 1, 0, 0, 0, 168, 794, 1, 0, 0, 0, 170, 809, 1, 0, 0, 0, 172, 831, 1, 0, 0, 0, 174, 836, 1, 0, 0, 0, 176, 839, 1, 0, 0, 0, 178, 845, 1, 0, 0, 0, 180, 854, 1, 0, 0, 0, 182, 859, 1, 0, 0, 0, 184, 862, 1, 0, 0, 0, 186, 868, 1, 0, 0, 0, 188, 870, 1, 0, 0, 0, 190, 872, 1, 0, 0, 0, 192, 208, 3, 82, 41, 0, 193, 208, 3, 94, 47, 0, 194, 208, 3, 104, 52, 0, 195, 208, 3, 148, 74, 0, 196, 208, 3, 118, 59, 0, 197, 208, 3, 124, 62, 0, 198, 208, 3, 130, 65, 0, 199, 208, 3, 154, 77, 0, 200, 208, 3, 160, 80, 0, 201, 208, 3, 170, 85, 0, 202, 208, 3, 168, 84, 0, 203, 208, 3, 176, 88, 0, 204, 208, 3, 184, 92, 0, 205, 208, 3, 2, 1, 0, 206, 208, 5, 97, 0, 0, 207, 192, 1, 0, 0, 0, 207, 193, 1, 0, 0, 0, 207, 194, 1, 0, 0, 0, 207, 195, 1, 0, 0, 0, 207, 196, 1, 0, 0, 0, 207, 197, 1, 0, 0, 0, 207, 198, 1, 0, 0, 0, 207, 199, 1, 0, 0, 0, 207, 200, 1, 0, 0, 0, 207, 201, 1, 0, 0, 0, 207, 202, 1, 0, 0, 0, 207, 203, 1, 0, 0, 0, 207, 204, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 207, 206, 1, 0, 0, 0, 208, 211, 1, 0, 0, 0, 209, 207, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 212, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 212, 213, 5, 0, 0, 1, 213, 1, 1, 0, 0, 0, 214, 215, 5, 1, 0, 0, 215, 216, 3, 56, 28, 0, 216, 217, 3, 24, 12, 0, 217, 218, 5, 60, 0, 0, 218, 3, 1, 0, 0, 0, 219, 220, 3, 60, 30, 0, 220, 221, 5, 2, 0, 0, 221, 223, 1, 0, 0, 0, 222, 219, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 227, 3, 20, 10, 0, 225, 226, 5, 47, 0, 0, 226, 228, 3, 20, 10, 0, 227, 225, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 234, 1, 0, 0, 0, 231, 234, 3, 22, 11, 0, 232, 234, 3, 6, 3, 0, 233, 222, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, 1, 0, 0, 0, 234, 5, 1, 0, 0, 0, 235, 237, 3, 8, 4, 0, 236, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 7, 1, 0, 0, 0, 240, 247, 3, 14, 7, 0, 241, 247, 3, 64, 32, 0, 242, 247, 3, 10, 5, 0, 243, 247, 3, 16, 8, 0, 244, 247, 3, 66, 33, 0, 245, 247, 3, 18, 9, 0, 246, 240, 1, 0, 0, 0, 246, 241, 1, 0, 0, 0, 246, 242, 1, 0, 0, 0, 246, 243, 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 246, 245, 1, 0, 0, 0, 247, 9, 1, 0, 0, 0, 248, 249, 5, 92, 0, 0, 249, 250, 5, 64, 0, 0, 250, 255, 3, 12, 6, 0, 251, 252, 5, 3, 0, 0, 252, 254, 3, 12, 6, 0, 253, 251, 1, 0, 0, 0, 254, 257, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 258, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 259, 5, 65, 0, 0, 259, 11, 1, 0, 0, 0, 260, 262, 3, 8, 4, 0, 261, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 13, 1, 0, 0, 0, 265, 266, 3, 60, 30, 0, 266, 267, 5, 2, 0, 0, 267, 268, 3, 66, 33, 0, 268, 15, 1, 0, 0, 0, 269, 270, 3, 56, 28, 0, 270, 271, 5, 62, 0, 0, 271, 272, 3, 56, 28, 0, 272, 17, 1, 0, 0, 0, 273, 274, 7, 0, 0, 0, 274, 19, 1, 0, 0, 0, 275, 276, 3, 66, 33, 0, 276, 21, 1, 0, 0, 0, 277, 278, 5, 96, 0, 0, 278, 23, 1, 0, 0, 0, 279, 280, 5, 63, 0, 0, 280, 281, 3, 4, 2, 0, 281, 25, 1, 0, 0, 0, 282, 284, 3, 56, 28, 0, 283, 285, 3, 24, 12, 0, 284, 283, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 27, 1, 0, 0, 0, 286, 287, 5, 68, 0, 0, 287, 292, 3, 26, 13, 0, 288, 289, 5, 3, 0, 0, 289, 291, 3, 26, 13, 0, 290, 288, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 296, 5, 69, 0, 0, 296, 29, 1, 0, 0, 0, 297, 298, 5, 93, 0, 0, 298, 31, 1, 0, 0, 0, 299, 301, 5, 68, 0, 0, 300, 302, 3, 30, 15, 0, 301, 300, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 304, 5, 69, 0, 0, 304, 33, 1, 0, 0, 0, 305, 307, 3, 28, 14, 0, 306, 305, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 312, 3, 70, 35, 0, 312, 314, 3, 56, 28, 0, 313, 315, 3, 32, 16, 0, 314, 313, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 317, 5, 63, 0, 0, 317, 319, 3, 66, 33, 0, 318, 316, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 5, 60, 0, 0, 321, 35, 1, 0, 0, 0, 322, 323, 5, 86, 0, 0, 323, 324, 3, 56, 28, 0, 324, 325, 5, 60, 0, 0, 325, 37, 1, 0, 0, 0, 326, 327, 5, 4, 0, 0, 327, 328, 3, 56, 28, 0, 328, 329, 5, 63, 0, 0, 329, 330, 3, 66, 33, 0, 330, 331, 5, 60, 0, 0, 331, 39, 1, 0, 0, 0, 332, 334, 3, 28, 14, 0, 333, 332, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 338, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 339, 5, 5, 0, 0, 339, 342, 3, 56, 28, 0, 340, 341, 5, 63, 0, 0, 341, 343, 3, 108, 54, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 5, 60, 0, 0, 345, 41, 1, 0, 0, 0, 346, 348, 3, 28, 14, 0, 347, 346, 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 352, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 353, 5, 6, 0, 0, 353, 354, 5, 63, 0, 0, 354, 355, 3, 108, 54, 0, 355, 356, 5, 60, 0, 0, 356, 43, 1, 0, 0, 0, 357, 359, 3, 28, 14, 0, 358, 357, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 361, 363, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 7, 0, 0, 364, 365, 5, 63, 0, 0, 365, 366, 3, 108, 54, 0, 366, 367, 5, 60, 0, 0, 367, 45, 1, 0, 0, 0, 368, 369, 5, 99, 0, 0, 369, 47, 1, 0, 0, 0, 370, 372, 3, 28, 14, 0, 371, 370, 1, 0, 0, 0, 372, 375, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 374, 376, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 376, 377, 3, 188, 94, 0, 377, 378, 5, 63, 0, 0, 378, 379, 3, 66, 33, 0, 379, 380, 5, 60, 0, 0, 380, 49, 1, 0, 0, 0, 381, 382, 5, 92, 0, 0, 382, 51, 1, 0, 0, 0, 383, 392, 3, 50, 25, 0, 384, 388, 5, 51, 0, 0, 385, 387, 3, 62, 31, 0, 386, 385, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, 393, 5, 50, 0, 0, 392, 384, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 395, 1, 0, 0, 0, 394, 396, 3, 46, 23, 0, 395, 394, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 53, 1, 0, 0, 0, 397, 398, 5, 92, 0, 0, 398, 55, 1, 0, 0, 0, 399, 400, 5, 92, 0, 0, 400, 57, 1, 0, 0, 0, 401, 402, 5, 92, 0, 0, 402, 59, 1, 0, 0, 0, 403, 404, 5, 92, 0, 0, 404, 61, 1, 0, 0, 0, 405, 406, 5, 92, 0, 0, 406, 63, 1, 0, 0, 0, 407, 408, 5, 92, 0, 0, 408, 410, 5, 64, 0, 0, 409, 411, 3, 68, 34, 0, 410, 409, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 416, 1, 0, 0, 0, 412, 413, 5, 3, 0, 0, 413, 415, 3, 68, 34, 0, 414, 412, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 419, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 419, 420, 5, 65, 0, 0, 420, 65, 1, 0, 0, 0, 421, 429, 3, 186, 93, 0, 422, 429, 5, 92, 0, 0, 423, 429, 5, 93, 0, 0, 424, 429, 5, 94, 0, 0, 425, 429, 3, 190, 95, 0, 426, 429, 3, 64, 32, 0, 427, 429, 3, 108, 54, 0, 428, 421, 1, 0, 0, 0, 428, 422, 1, 0, 0, 0, 428, 423, 1, 0, 0, 0, 428, 424, 1, 0, 0, 0, 428, 425, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 428, 427, 1, 0, 0, 0, 429, 67, 1, 0, 0, 0, 430, 435, 5, 92, 0, 0, 431, 435, 5, 93, 0, 0, 432, 435, 5, 94, 0, 0, 433, 435, 3, 190, 95, 0, 434, 430, 1, 0, 0, 0, 434, 431, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 434, 433, 1, 0, 0, 0, 435, 69, 1, 0, 0, 0, 436, 437, 3, 52, 26, 0, 437, 71, 1, 0, 0, 0, 438, 439, 5, 103, 0, 0, 439, 73, 1, 0, 0, 0, 440, 441, 7, 1, 0, 0, 441, 75, 1, 0, 0, 0, 442, 443, 5, 61, 0, 0, 443, 448, 3, 54, 27, 0, 444, 445, 5, 3, 0, 0, 445, 447, 3, 54, 27, 0, 446, 444, 1, 0, 0, 0, 447, 450, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 77, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 451, 455, 3, 36, 18, 0, 452, 455, 3, 38, 19, 0, 453, 455, 5, 97, 0, 0, 454, 451, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 454, 453, 1, 0, 0, 0, 455, 79, 1, 0, 0, 0, 456, 458, 3, 78, 39, 0, 457, 456, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 81, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 462, 463, 5, 73, 0, 0, 463, 465, 3, 56, 28, 0, 464, 466, 3, 76, 38, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 5, 66, 0, 0, 468, 469, 3, 80, 40, 0, 469, 470, 5, 67, 0, 0, 470, 83, 1, 0, 0, 0, 471, 476, 3, 34, 17, 0, 472, 476, 3, 86, 43, 0, 473, 476, 3, 72, 36, 0, 474, 476, 5, 97, 0, 0, 475, 471, 1, 0, 0, 0, 475, 472, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 474, 1, 0, 0, 0, 476, 85, 1, 0, 0, 0, 477, 479, 3, 28, 14, 0, 478, 477, 1, 0, 0, 0, 479, 482, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 481, 483, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 483, 484, 3, 70, 35, 0, 484, 485, 3, 56, 28, 0, 485, 486, 5, 64, 0, 0, 486, 487, 3, 88, 44, 0, 487, 489, 5, 65, 0, 0, 488, 490, 3, 90, 45, 0, 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 5, 100, 0, 0, 492, 87, 1, 0, 0, 0, 493, 494, 5, 64, 0, 0, 494, 495, 3, 88, 44, 0, 495, 496, 5, 65, 0, 0, 496, 499, 1, 0, 0, 0, 497, 499, 8, 2, 0, 0, 498, 493, 1, 0, 0, 0, 498, 497, 1, 0, 0, 0, 499, 502, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 89, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 503, 504, 5, 61, 0, 0, 504, 505, 5, 92, 0, 0, 505, 91, 1, 0, 0, 0, 506, 508, 3, 84, 42, 0, 507, 506, 1, 0, 0, 0, 508, 511, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 93, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 512, 514, 3, 28, 14, 0, 513, 512, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 516, 518, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 518, 519, 5, 74, 0, 0, 519, 521, 3, 56, 28, 0, 520, 522, 3, 76, 38, 0, 521, 520, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 5, 66, 0, 0, 524, 525, 3, 92, 46, 0, 525, 526, 5, 67, 0, 0, 526, 95, 1, 0, 0, 0, 527, 528, 3, 70, 35, 0, 528, 529, 3, 56, 28, 0, 529, 530, 5, 60, 0, 0, 530, 97, 1, 0, 0, 0, 531, 532, 5, 89, 0, 0, 532, 533, 3, 56, 28, 0, 533, 534, 5, 60, 0, 0, 534, 99, 1, 0, 0, 0, 535, 539, 3, 96, 48, 0, 536, 539, 3, 98, 49, 0, 537, 539, 5, 97, 0, 0, 538, 535, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 538, 537, 1, 0, 0, 0, 539, 101, 1, 0, 0, 0, 540, 542, 3, 100, 50, 0, 541, 540, 1, 0, 0, 0, 542, 545, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 103, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 546, 547, 5, 87, 0, 0, 547, 548, 3, 56, 28, 0, 548, 549, 5, 66, 0, 0, 549, 550, 3, 102, 51, 0, 550, 551, 5, 67, 0, 0, 551, 105, 1, 0, 0, 0, 552, 553, 3, 66, 33, 0, 553, 107, 1, 0, 0, 0, 554, 555, 5, 66, 0, 0, 555, 560, 3, 106, 53, 0, 556, 557, 5, 3, 0, 0, 557, 559, 3, 106, 53, 0, 558, 556, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 563, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 564, 5, 67, 0, 0, 564, 109, 1, 0, 0, 0, 565, 566, 5, 90, 0, 0, 566, 567, 5, 63, 0, 0, 567, 568, 3, 56, 28, 0, 568, 569, 5, 60, 0, 0, 569, 111, 1, 0, 0, 0, 570, 572, 3, 28, 14, 0, 571, 570, 1, 0, 0, 0, 572, 575, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 576, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 576, 577, 3, 186, 93, 0, 577, 578, 5, 63, 0, 0, 578, 579, 3, 74, 37, 0, 579, 580, 5, 60, 0, 0, 580, 113, 1, 0, 0, 0, 581, 586, 3, 110, 55, 0, 582, 586, 3, 112, 56, 0, 583, 586, 3, 40, 20, 0, 584, 586, 5, 97, 0, 0, 585, 581, 1, 0, 0, 0, 585, 582, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 584, 1, 0, 0, 0, 586, 115, 1, 0, 0, 0, 587, 589, 3, 114, 57, 0, 588, 587, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 117, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 593, 595, 3, 28, 14, 0, 594, 593, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 597, 599, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 599, 600, 5, 75, 0, 0, 600, 602, 3, 56, 28, 0, 601, 603, 3, 76, 38, 0, 602, 601, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 5, 66, 0, 0, 605, 606, 3, 116, 58, 0, 606, 607, 5, 67, 0, 0, 607, 119, 1, 0, 0, 0, 608, 616, 3, 110, 55, 0, 609, 616, 3, 112, 56, 0, 610, 616, 3, 40, 20, 0, 611, 616, 3, 42, 21, 0, 612, 616, 3, 44, 22, 0, 613, 616, 3, 48, 24, 0, 614, 616, 5, 97, 0, 0, 615, 608, 1, 0, 0, 0, 615, 609, 1, 0, 0, 0, 615, 610, 1, 0, 0, 0, 615, 611, 1, 0, 0, 0, 615, 612, 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 614, 1, 0, 0, 0, 616, 121, 1, 0, 0, 0, 617, 619, 3, 120, 60, 0, 618, 617, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 123, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 623, 625, 3, 28, 14, 0, 624, 623, 1, 0, 0, 0, 625, 628, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 627, 629, 1, 0, 0, 0, 628, 626, 1, 0, 0, 0, 629, 630, 5, 76, 0, 0, 630, 632, 3, 56, 28, 0, 631, 633, 3, 76, 38, 0, 632, 631, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 5, 66, 0, 0, 635, 636, 3, 122, 61, 0, 636, 637, 5, 67, 0, 0, 637, 125, 1, 0, 0, 0, 638, 641, 3, 110, 55, 0, 639, 641, 5, 97, 0, 0, 640, 638, 1, 0, 0, 0, 640, 639, 1, 0, 0, 0, 641, 127, 1, 0, 0, 0, 642, 644, 3, 126, 63, 0, 643, 642, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 129, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 649, 5, 77, 0, 0, 649, 651, 3, 56, 28, 0, 650, 652, 3, 76, 38, 0, 651, 650, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 654, 5, 66, 0, 0, 654, 655, 3, 128, 64, 0, 655, 656, 5, 67, 0, 0, 656, 131, 1, 0, 0, 0, 657, 658, 7, 3, 0, 0, 658, 133, 1, 0, 0, 0, 659, 660, 3, 132, 66, 0, 660, 661, 5, 63, 0, 0, 661, 662, 3, 66, 33, 0, 662, 663, 5, 60, 0, 0, 663, 135, 1, 0, 0, 0, 664, 666, 3, 28, 14, 0, 665, 664, 1, 0, 0, 0, 666, 669, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 667, 665, 1, 0, 0, 0, 668, 670, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0, 670, 671, 5, 80, 0, 0, 671, 672, 3, 70, 35, 0, 672, 673, 3, 56, 28, 0, 673, 674, 5, 60, 0, 0, 674, 137, 1, 0, 0, 0, 675, 679, 3, 134, 67, 0, 676, 679, 3, 136, 68, 0, 677, 679, 5, 97, 0, 0, 678, 675, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 677, 1, 0, 0, 0, 679, 139, 1, 0, 0, 0, 680, 682, 3, 138, 69, 0, 681, 680, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0, 683, 681, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 141, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 686, 687, 5, 79, 0, 0, 687, 688, 3, 56, 28, 0, 688, 689, 5, 66, 0, 0, 689, 690, 3, 140, 70, 0, 690, 691, 5, 67, 0, 0, 691, 143, 1, 0, 0, 0, 692, 698, 3, 110, 55, 0, 693, 698, 3, 112, 56, 0, 694, 698, 3, 40, 20, 0, 695, 698, 3, 142, 71, 0, 696, 698, 5, 97, 0, 0, 697, 692, 1, 0, 0, 0, 697, 693, 1, 0, 0, 0, 697, 694, 1, 0, 0, 0, 697, 695, 1, 0, 0, 0, 697, 696, 1, 0, 0, 0, 698, 145, 1, 0, 0, 0, 699, 701, 3, 144, 72, 0, 700, 699, 1, 0, 0, 0, 701, 704, 1, 0, 0, 0, 702, 700, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 147, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 705, 707, 3, 28, 14, 0, 706, 705, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 711, 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 711, 712, 5, 78, 0, 0, 712, 714, 3, 56, 28, 0, 713, 715, 3, 76, 38, 0, 714, 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 5, 66, 0, 0, 717, 718, 3, 146, 73, 0, 718, 719, 5, 67, 0, 0, 719, 149, 1, 0, 0, 0, 720, 724, 3, 112, 56, 0, 721, 724, 5, 97, 0, 0, 722, 724, 3, 48, 24, 0, 723, 720, 1, 0, 0, 0, 723, 721, 1, 0, 0, 0, 723, 722, 1, 0, 0, 0, 724, 151, 1, 0, 0, 0, 725, 727, 3, 150, 75, 0, 726, 725, 1, 0, 0, 0, 727, 730, 1, 0, 0, 0, 728, 726, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 153, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 731, 733, 3, 28, 14, 0, 732, 731, 1, 0, 0, 0, 733, 736, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 738, 5, 82, 0, 0, 738, 740, 3, 56, 28, 0, 739, 741, 3, 76, 38, 0, 740, 739, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 5, 66, 0, 0, 743, 744, 3, 152, 76, 0, 744, 745, 5, 67, 0, 0, 745, 155, 1, 0, 0, 0, 746, 749, 3, 112, 56, 0, 747, 749, 5, 97, 0, 0, 748, 746, 1, 0, 0, 0, 748, 747, 1, 0, 0, 0, 749, 157, 1, 0, 0, 0, 750, 752, 3, 156, 78, 0, 751, 750, 1, 0, 0, 0, 752, 755, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 159, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 756, 758, 3, 28, 14, 0, 757, 756, 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 759, 1, 0, 0, 0, 762, 763, 5, 81, 0, 0, 763, 765, 3, 56, 28, 0, 764, 766, 3, 76, 38, 0, 765, 764, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 768, 5, 66, 0, 0, 768, 769, 3, 158, 79, 0, 769, 770, 5, 67, 0, 0, 770, 161, 1, 0, 0, 0, 771, 773, 3, 28, 14, 0, 772, 771, 1, 0, 0, 0, 773, 776, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 775, 777, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 777, 778, 3, 70, 35, 0, 778, 779, 3, 56, 28, 0, 779, 780, 5, 60, 0, 0, 780, 163, 1, 0, 0, 0, 781, 784, 3, 162, 81, 0, 782, 784, 5, 97, 0, 0, 783, 781, 1, 0, 0, 0, 783, 782, 1, 0, 0, 0, 784, 165, 1, 0, 0, 0, 785, 787, 3, 164, 82, 0, 786, 785, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 167, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 793, 3, 28, 14, 0, 792, 791, 1, 0, 0, 0, 793, 796, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 794, 792, 1, 0, 0, 0, 795, 797, 1, 0, 0, 0, 796, 794, 1, 0, 0, 0, 797, 798, 5, 84, 0, 0, 798, 800, 3, 56, 28, 0, 799, 801, 3, 76, 38, 0, 800, 799, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 803, 5, 66, 0, 0, 803, 804, 3, 166, 83, 0, 804, 805, 5, 67, 0, 0, 805, 169, 1, 0, 0, 0, 806, 808, 3, 28, 14, 0, 807, 806, 1, 0, 0, 0, 808, 811, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 809, 807, 1, 0, 0, 0, 810, 812, 1, 0, 0, 0, 811, 809, 1, 0, 0, 0, 812, 813, 5, 83, 0, 0, 813, 815, 3, 56, 28, 0, 814, 816, 3, 76, 38, 0, 815, 814, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 5, 66, 0, 0, 818, 819, 3, 166, 83, 0, 819, 820, 5, 67, 0, 0, 820, 171, 1, 0, 0, 0, 821, 823, 3, 28, 14, 0, 822, 821, 1, 0, 0, 0, 823, 826, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 827, 828, 3, 56, 28, 0, 828, 829, 5, 60, 0, 0, 829, 832, 1, 0, 0, 0, 830, 832, 5, 97, 0, 0, 831, 824, 1, 0, 0, 0, 831, 830, 1, 0, 0, 0, 832, 173, 1, 0, 0, 0, 833, 835, 3, 172, 86, 0, 834, 833, 1, 0, 0, 0, 835, 838, 1, 0, 0, 0, 836, 834, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 175, 1, 0, 0, 0, 838, 836, 1, 0, 0, 0, 839, 840, 5, 85, 0, 0, 840, 841, 3, 56, 28, 0, 841, 842, 5, 66, 0, 0, 842, 843, 3, 174, 87, 0, 843, 844, 5, 67, 0, 0, 844, 177, 1, 0, 0, 0, 845, 848, 3, 56, 28, 0, 846, 847, 5, 63, 0, 0, 847, 849, 3, 66, 33, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 851, 5, 60, 0, 0, 851, 179, 1, 0, 0, 0, 852, 855, 3, 178, 89, 0, 853, 855, 5, 97, 0, 0, 854, 852, 1, 0, 0, 0, 854, 853, 1, 0, 0, 0, 855, 181, 1, 0, 0, 0, 856, 858, 3, 180, 90, 0, 857, 856, 1, 0, 0, 0, 858, 861, 1, 0, 0, 0, 859, 857, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 183, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 862, 863, 5, 91, 0, 0, 863, 864, 3, 56, 28, 0, 864, 865, 5, 66, 0, 0, 865, 866, 3, 182, 91, 0, 866, 867, 5, 67, 0, 0, 867, 185, 1, 0, 0, 0, 868, 869, 7, 4, 0, 0, 869, 187, 1, 0, 0, 0, 870, 871, 7, 5, 0, 0, 871, 189, 1, 0, 0, 0, 872, 873, 7, 6, 0, 0, 873, 191, 1, 0, 0, 0, 82, 207, 209, 222, 229, 233, 238, 246, 255, 263, 284, 292, 301, 308, 314, 318, 335, 342, 349, 360, 373, 388, 392, 395, 410, 416, 428, 434, 448, 454, 459, 465, 475, 480, 489, 498, 500, 509, 515, 521, 538, 543, 560, 573, 585, 590, 596, 602, 615, 620, 626, 632, 640, 645, 651, 667, 678, 683, 697, 702, 708, 714, 723, 728, 734, 740, 748, 753, 759, 765, 774, 783, 788, 794, 800, 809, 815, 824, 831, 836, 848, 854, 859] \ No newline at end of file diff --git a/sources/Prism/.antlr/PrismBaseListener.h b/sources/Prism/.antlr/PrismBaseListener.h index 1e76d6a44..00d77fba0 100644 --- a/sources/Prism/.antlr/PrismBaseListener.h +++ b/sources/Prism/.antlr/PrismBaseListener.h @@ -31,6 +31,12 @@ class PrismBaseListener : public PrismListener { virtual void enterCond_term(PrismParser::Cond_termContext * /*ctx*/) override { } virtual void exitCond_term(PrismParser::Cond_termContext * /*ctx*/) override { } + virtual void enterCall(PrismParser::CallContext * /*ctx*/) override { } + virtual void exitCall(PrismParser::CallContext * /*ctx*/) override { } + + virtual void enterCall_arg(PrismParser::Call_argContext * /*ctx*/) override { } + virtual void exitCall_arg(PrismParser::Call_argContext * /*ctx*/) override { } + virtual void enterQualified_ref(PrismParser::Qualified_refContext * /*ctx*/) override { } virtual void exitQualified_ref(PrismParser::Qualified_refContext * /*ctx*/) override { } diff --git a/sources/Prism/.antlr/PrismBaseVisitor.h b/sources/Prism/.antlr/PrismBaseVisitor.h index 3ea72d6a3..c1c83e63d 100644 --- a/sources/Prism/.antlr/PrismBaseVisitor.h +++ b/sources/Prism/.antlr/PrismBaseVisitor.h @@ -35,6 +35,14 @@ class PrismBaseVisitor : public PrismVisitor { return visitChildren(ctx); } + virtual std::any visitCall(PrismParser::CallContext *ctx) override { + return visitChildren(ctx); + } + + virtual std::any visitCall_arg(PrismParser::Call_argContext *ctx) override { + return visitChildren(ctx); + } + virtual std::any visitQualified_ref(PrismParser::Qualified_refContext *ctx) override { return visitChildren(ctx); } diff --git a/sources/Prism/.antlr/PrismListener.h b/sources/Prism/.antlr/PrismListener.h index fac20e35b..c75108d6a 100644 --- a/sources/Prism/.antlr/PrismListener.h +++ b/sources/Prism/.antlr/PrismListener.h @@ -29,6 +29,12 @@ class PrismListener : public antlr4::tree::ParseTreeListener { virtual void enterCond_term(PrismParser::Cond_termContext *ctx) = 0; virtual void exitCond_term(PrismParser::Cond_termContext *ctx) = 0; + virtual void enterCall(PrismParser::CallContext *ctx) = 0; + virtual void exitCall(PrismParser::CallContext *ctx) = 0; + + virtual void enterCall_arg(PrismParser::Call_argContext *ctx) = 0; + virtual void exitCall_arg(PrismParser::Call_argContext *ctx) = 0; + virtual void enterQualified_ref(PrismParser::Qualified_refContext *ctx) = 0; virtual void exitQualified_ref(PrismParser::Qualified_refContext *ctx) = 0; diff --git a/sources/Prism/.antlr/PrismParser.cpp b/sources/Prism/.antlr/PrismParser.cpp index cd64fc2bd..812854d28 100644 --- a/sources/Prism/.antlr/PrismParser.cpp +++ b/sources/Prism/.antlr/PrismParser.cpp @@ -45,14 +45,14 @@ void prismParserInitialize() { auto staticData = std::make_unique( std::vector{ "parse", "const_definition", "bind_option", "cond_expr", "cond_term", - "qualified_ref", "member_ref", "cond_op", "flag_value_holder", "raw_value", - "options_assign", "option", "option_block", "array_count_id", "array", - "value_declaration", "slot_declaration", "sampler_declaration", "define_declaration", - "rtv_formats_declaration", "blends_declaration", "pointer", "pso_param", - "class_no_template", "type_with_template", "inherit_id", "name_id", - "option_id", "owner_id", "template_id", "function_id", "value_id", - "value_id_ignore", "type_id", "insert_block", "shader_path", "inherit", - "layout_stat", "layout_block", "layout_definition", "table_stat", + "call", "call_arg", "qualified_ref", "member_ref", "cond_op", "flag_value_holder", + "raw_value", "options_assign", "option", "option_block", "array_count_id", + "array", "value_declaration", "slot_declaration", "sampler_declaration", + "define_declaration", "rtv_formats_declaration", "blends_declaration", + "pointer", "pso_param", "class_no_template", "type_with_template", + "inherit_id", "name_id", "option_id", "owner_id", "template_id", "function_id", + "value_id", "value_id_ignore", "type_id", "insert_block", "shader_path", + "inherit", "layout_stat", "layout_block", "layout_definition", "table_stat", "function_definition", "function_params", "function_semantic", "table_block", "table_definition", "rt_color_declaration", "rt_ds_declaration", "rt_stat", "rt_block", "rt_definition", "array_value_holder", "array_value_ids", @@ -101,7 +101,7 @@ void prismParserInitialize() { } ); static const int32_t serializedATNSegment[] = { - 4,1,103,853,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, + 4,1,103,875,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2, 7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7, 14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7, 21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7, @@ -114,280 +114,287 @@ void prismParserInitialize() { 70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7, 77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7, 84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, - 91,2,92,7,92,2,93,7,93,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, - 0,1,0,1,0,1,0,5,0,204,8,0,10,0,12,0,207,9,0,1,0,1,0,1,1,1,1,1,1,1,1,1, - 1,1,2,1,2,1,2,3,2,219,8,2,1,2,1,2,1,2,4,2,224,8,2,11,2,12,2,225,1,2,1, - 2,3,2,230,8,2,1,3,4,3,233,8,3,11,3,12,3,234,1,4,1,4,1,4,1,4,1,4,3,4,242, - 8,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10, - 1,10,1,11,1,11,3,11,263,8,11,1,12,1,12,1,12,1,12,5,12,269,8,12,10,12, - 12,12,272,9,12,1,12,1,12,1,13,1,13,1,14,1,14,3,14,280,8,14,1,14,1,14, - 1,15,5,15,285,8,15,10,15,12,15,288,9,15,1,15,1,15,1,15,3,15,293,8,15, - 1,15,1,15,3,15,297,8,15,1,15,1,15,1,16,1,16,1,16,1,16,1,17,1,17,1,17, - 1,17,1,17,1,17,1,18,5,18,312,8,18,10,18,12,18,315,9,18,1,18,1,18,1,18, - 1,18,3,18,321,8,18,1,18,1,18,1,19,5,19,326,8,19,10,19,12,19,329,9,19, - 1,19,1,19,1,19,1,19,1,19,1,20,5,20,337,8,20,10,20,12,20,340,9,20,1,20, - 1,20,1,20,1,20,1,20,1,21,1,21,1,22,5,22,350,8,22,10,22,12,22,353,9,22, - 1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,24,5,24,365,8,24,10,24, - 12,24,368,9,24,1,24,3,24,371,8,24,1,24,3,24,374,8,24,1,25,1,25,1,26,1, - 26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,30,3,30,389,8,30,1,30,1, - 30,5,30,393,8,30,10,30,12,30,396,9,30,1,30,1,30,1,31,1,31,1,31,1,31,1, - 31,1,31,1,31,3,31,407,8,31,1,32,1,32,1,32,1,32,3,32,413,8,32,1,33,1,33, - 1,34,1,34,1,35,1,35,1,36,1,36,1,36,1,36,5,36,425,8,36,10,36,12,36,428, - 9,36,1,37,1,37,1,37,3,37,433,8,37,1,38,5,38,436,8,38,10,38,12,38,439, - 9,38,1,39,1,39,1,39,3,39,444,8,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40, - 1,40,3,40,454,8,40,1,41,5,41,457,8,41,10,41,12,41,460,9,41,1,41,1,41, - 1,41,1,41,1,41,1,41,3,41,468,8,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42, - 5,42,477,8,42,10,42,12,42,480,9,42,1,43,1,43,1,43,1,44,5,44,486,8,44, - 10,44,12,44,489,9,44,1,45,5,45,492,8,45,10,45,12,45,495,9,45,1,45,1,45, - 1,45,3,45,500,8,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,47,1,47, - 1,47,1,47,1,48,1,48,1,48,3,48,517,8,48,1,49,5,49,520,8,49,10,49,12,49, - 523,9,49,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52, - 5,52,537,8,52,10,52,12,52,540,9,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53, - 1,54,5,54,550,8,54,10,54,12,54,553,9,54,1,54,1,54,1,54,1,54,1,54,1,55, - 1,55,1,55,1,55,3,55,564,8,55,1,56,5,56,567,8,56,10,56,12,56,570,9,56, - 1,57,5,57,573,8,57,10,57,12,57,576,9,57,1,57,1,57,1,57,3,57,581,8,57, - 1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,3,58,594,8,58, - 1,59,5,59,597,8,59,10,59,12,59,600,9,59,1,60,5,60,603,8,60,10,60,12,60, - 606,9,60,1,60,1,60,1,60,3,60,611,8,60,1,60,1,60,1,60,1,60,1,61,1,61,3, - 61,619,8,61,1,62,5,62,622,8,62,10,62,12,62,625,9,62,1,63,1,63,1,63,3, - 63,630,8,63,1,63,1,63,1,63,1,63,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1, - 66,5,66,644,8,66,10,66,12,66,647,9,66,1,66,1,66,1,66,1,66,1,66,1,67,1, - 67,1,67,3,67,657,8,67,1,68,5,68,660,8,68,10,68,12,68,663,9,68,1,69,1, - 69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,3,70,676,8,70,1,71,5, - 71,679,8,71,10,71,12,71,682,9,71,1,72,5,72,685,8,72,10,72,12,72,688,9, - 72,1,72,1,72,1,72,3,72,693,8,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,3, - 73,702,8,73,1,74,5,74,705,8,74,10,74,12,74,708,9,74,1,75,5,75,711,8,75, - 10,75,12,75,714,9,75,1,75,1,75,1,75,3,75,719,8,75,1,75,1,75,1,75,1,75, - 1,76,1,76,3,76,727,8,76,1,77,5,77,730,8,77,10,77,12,77,733,9,77,1,78, - 5,78,736,8,78,10,78,12,78,739,9,78,1,78,1,78,1,78,3,78,744,8,78,1,78, - 1,78,1,78,1,78,1,79,5,79,751,8,79,10,79,12,79,754,9,79,1,79,1,79,1,79, - 1,79,1,80,1,80,3,80,762,8,80,1,81,5,81,765,8,81,10,81,12,81,768,9,81, - 1,82,5,82,771,8,82,10,82,12,82,774,9,82,1,82,1,82,1,82,3,82,779,8,82, - 1,82,1,82,1,82,1,82,1,83,5,83,786,8,83,10,83,12,83,789,9,83,1,83,1,83, - 1,83,3,83,794,8,83,1,83,1,83,1,83,1,83,1,84,5,84,801,8,84,10,84,12,84, - 804,9,84,1,84,1,84,1,84,1,84,3,84,810,8,84,1,85,5,85,813,8,85,10,85,12, - 85,816,9,85,1,86,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,3,87,827,8,87, - 1,87,1,87,1,88,1,88,3,88,833,8,88,1,89,5,89,836,8,89,10,89,12,89,839, - 9,89,1,90,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,92,1,92,1,93,1,93,1,93, - 18,286,313,327,338,351,426,458,493,551,574,604,645,686,712,737,752,772, - 787,0,94,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, - 44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88, - 90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, - 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162, - 164,166,168,170,172,174,176,178,180,182,184,186,0,7,4,0,45,46,48,53,59, - 59,64,65,2,0,92,92,95,95,1,0,64,65,1,0,8,12,1,0,13,25,1,0,26,44,1,0,70, - 71,878,0,205,1,0,0,0,2,210,1,0,0,0,4,229,1,0,0,0,6,232,1,0,0,0,8,241, - 1,0,0,0,10,243,1,0,0,0,12,247,1,0,0,0,14,251,1,0,0,0,16,253,1,0,0,0,18, - 255,1,0,0,0,20,257,1,0,0,0,22,260,1,0,0,0,24,264,1,0,0,0,26,275,1,0,0, - 0,28,277,1,0,0,0,30,286,1,0,0,0,32,300,1,0,0,0,34,304,1,0,0,0,36,313, - 1,0,0,0,38,327,1,0,0,0,40,338,1,0,0,0,42,346,1,0,0,0,44,351,1,0,0,0,46, - 359,1,0,0,0,48,361,1,0,0,0,50,375,1,0,0,0,52,377,1,0,0,0,54,379,1,0,0, - 0,56,381,1,0,0,0,58,383,1,0,0,0,60,385,1,0,0,0,62,406,1,0,0,0,64,412, - 1,0,0,0,66,414,1,0,0,0,68,416,1,0,0,0,70,418,1,0,0,0,72,420,1,0,0,0,74, - 432,1,0,0,0,76,437,1,0,0,0,78,440,1,0,0,0,80,453,1,0,0,0,82,458,1,0,0, - 0,84,478,1,0,0,0,86,481,1,0,0,0,88,487,1,0,0,0,90,493,1,0,0,0,92,505, - 1,0,0,0,94,509,1,0,0,0,96,516,1,0,0,0,98,521,1,0,0,0,100,524,1,0,0,0, - 102,530,1,0,0,0,104,532,1,0,0,0,106,543,1,0,0,0,108,551,1,0,0,0,110,563, - 1,0,0,0,112,568,1,0,0,0,114,574,1,0,0,0,116,593,1,0,0,0,118,598,1,0,0, - 0,120,604,1,0,0,0,122,618,1,0,0,0,124,623,1,0,0,0,126,626,1,0,0,0,128, - 635,1,0,0,0,130,637,1,0,0,0,132,645,1,0,0,0,134,656,1,0,0,0,136,661,1, - 0,0,0,138,664,1,0,0,0,140,675,1,0,0,0,142,680,1,0,0,0,144,686,1,0,0,0, - 146,701,1,0,0,0,148,706,1,0,0,0,150,712,1,0,0,0,152,726,1,0,0,0,154,731, - 1,0,0,0,156,737,1,0,0,0,158,752,1,0,0,0,160,761,1,0,0,0,162,766,1,0,0, - 0,164,772,1,0,0,0,166,787,1,0,0,0,168,809,1,0,0,0,170,814,1,0,0,0,172, - 817,1,0,0,0,174,823,1,0,0,0,176,832,1,0,0,0,178,837,1,0,0,0,180,840,1, - 0,0,0,182,846,1,0,0,0,184,848,1,0,0,0,186,850,1,0,0,0,188,204,3,78,39, - 0,189,204,3,90,45,0,190,204,3,100,50,0,191,204,3,144,72,0,192,204,3,114, - 57,0,193,204,3,120,60,0,194,204,3,126,63,0,195,204,3,150,75,0,196,204, - 3,156,78,0,197,204,3,166,83,0,198,204,3,164,82,0,199,204,3,172,86,0,200, - 204,3,180,90,0,201,204,3,2,1,0,202,204,5,97,0,0,203,188,1,0,0,0,203,189, - 1,0,0,0,203,190,1,0,0,0,203,191,1,0,0,0,203,192,1,0,0,0,203,193,1,0,0, - 0,203,194,1,0,0,0,203,195,1,0,0,0,203,196,1,0,0,0,203,197,1,0,0,0,203, - 198,1,0,0,0,203,199,1,0,0,0,203,200,1,0,0,0,203,201,1,0,0,0,203,202,1, - 0,0,0,204,207,1,0,0,0,205,203,1,0,0,0,205,206,1,0,0,0,206,208,1,0,0,0, - 207,205,1,0,0,0,208,209,5,0,0,1,209,1,1,0,0,0,210,211,5,1,0,0,211,212, - 3,52,26,0,212,213,3,20,10,0,213,214,5,60,0,0,214,3,1,0,0,0,215,216,3, - 56,28,0,216,217,5,2,0,0,217,219,1,0,0,0,218,215,1,0,0,0,218,219,1,0,0, - 0,219,220,1,0,0,0,220,223,3,16,8,0,221,222,5,47,0,0,222,224,3,16,8,0, - 223,221,1,0,0,0,224,225,1,0,0,0,225,223,1,0,0,0,225,226,1,0,0,0,226,230, - 1,0,0,0,227,230,3,18,9,0,228,230,3,6,3,0,229,218,1,0,0,0,229,227,1,0, - 0,0,229,228,1,0,0,0,230,5,1,0,0,0,231,233,3,8,4,0,232,231,1,0,0,0,233, - 234,1,0,0,0,234,232,1,0,0,0,234,235,1,0,0,0,235,7,1,0,0,0,236,242,3,10, - 5,0,237,242,3,60,30,0,238,242,3,12,6,0,239,242,3,62,31,0,240,242,3,14, - 7,0,241,236,1,0,0,0,241,237,1,0,0,0,241,238,1,0,0,0,241,239,1,0,0,0,241, - 240,1,0,0,0,242,9,1,0,0,0,243,244,3,56,28,0,244,245,5,2,0,0,245,246,3, - 62,31,0,246,11,1,0,0,0,247,248,3,52,26,0,248,249,5,62,0,0,249,250,3,52, - 26,0,250,13,1,0,0,0,251,252,7,0,0,0,252,15,1,0,0,0,253,254,3,62,31,0, - 254,17,1,0,0,0,255,256,5,96,0,0,256,19,1,0,0,0,257,258,5,63,0,0,258,259, - 3,4,2,0,259,21,1,0,0,0,260,262,3,52,26,0,261,263,3,20,10,0,262,261,1, - 0,0,0,262,263,1,0,0,0,263,23,1,0,0,0,264,265,5,68,0,0,265,270,3,22,11, - 0,266,267,5,3,0,0,267,269,3,22,11,0,268,266,1,0,0,0,269,272,1,0,0,0,270, - 268,1,0,0,0,270,271,1,0,0,0,271,273,1,0,0,0,272,270,1,0,0,0,273,274,5, - 69,0,0,274,25,1,0,0,0,275,276,5,93,0,0,276,27,1,0,0,0,277,279,5,68,0, - 0,278,280,3,26,13,0,279,278,1,0,0,0,279,280,1,0,0,0,280,281,1,0,0,0,281, - 282,5,69,0,0,282,29,1,0,0,0,283,285,3,24,12,0,284,283,1,0,0,0,285,288, - 1,0,0,0,286,287,1,0,0,0,286,284,1,0,0,0,287,289,1,0,0,0,288,286,1,0,0, - 0,289,290,3,66,33,0,290,292,3,52,26,0,291,293,3,28,14,0,292,291,1,0,0, - 0,292,293,1,0,0,0,293,296,1,0,0,0,294,295,5,63,0,0,295,297,3,62,31,0, - 296,294,1,0,0,0,296,297,1,0,0,0,297,298,1,0,0,0,298,299,5,60,0,0,299, - 31,1,0,0,0,300,301,5,86,0,0,301,302,3,52,26,0,302,303,5,60,0,0,303,33, - 1,0,0,0,304,305,5,4,0,0,305,306,3,52,26,0,306,307,5,63,0,0,307,308,3, - 62,31,0,308,309,5,60,0,0,309,35,1,0,0,0,310,312,3,24,12,0,311,310,1,0, - 0,0,312,315,1,0,0,0,313,314,1,0,0,0,313,311,1,0,0,0,314,316,1,0,0,0,315, - 313,1,0,0,0,316,317,5,5,0,0,317,320,3,52,26,0,318,319,5,63,0,0,319,321, - 3,104,52,0,320,318,1,0,0,0,320,321,1,0,0,0,321,322,1,0,0,0,322,323,5, - 60,0,0,323,37,1,0,0,0,324,326,3,24,12,0,325,324,1,0,0,0,326,329,1,0,0, - 0,327,328,1,0,0,0,327,325,1,0,0,0,328,330,1,0,0,0,329,327,1,0,0,0,330, - 331,5,6,0,0,331,332,5,63,0,0,332,333,3,104,52,0,333,334,5,60,0,0,334, - 39,1,0,0,0,335,337,3,24,12,0,336,335,1,0,0,0,337,340,1,0,0,0,338,339, - 1,0,0,0,338,336,1,0,0,0,339,341,1,0,0,0,340,338,1,0,0,0,341,342,5,7,0, - 0,342,343,5,63,0,0,343,344,3,104,52,0,344,345,5,60,0,0,345,41,1,0,0,0, - 346,347,5,99,0,0,347,43,1,0,0,0,348,350,3,24,12,0,349,348,1,0,0,0,350, - 353,1,0,0,0,351,352,1,0,0,0,351,349,1,0,0,0,352,354,1,0,0,0,353,351,1, - 0,0,0,354,355,3,184,92,0,355,356,5,63,0,0,356,357,3,62,31,0,357,358,5, - 60,0,0,358,45,1,0,0,0,359,360,5,92,0,0,360,47,1,0,0,0,361,370,3,46,23, - 0,362,366,5,51,0,0,363,365,3,58,29,0,364,363,1,0,0,0,365,368,1,0,0,0, - 366,364,1,0,0,0,366,367,1,0,0,0,367,369,1,0,0,0,368,366,1,0,0,0,369,371, - 5,50,0,0,370,362,1,0,0,0,370,371,1,0,0,0,371,373,1,0,0,0,372,374,3,42, - 21,0,373,372,1,0,0,0,373,374,1,0,0,0,374,49,1,0,0,0,375,376,5,92,0,0, - 376,51,1,0,0,0,377,378,5,92,0,0,378,53,1,0,0,0,379,380,5,92,0,0,380,55, - 1,0,0,0,381,382,5,92,0,0,382,57,1,0,0,0,383,384,5,92,0,0,384,59,1,0,0, - 0,385,386,5,92,0,0,386,388,5,64,0,0,387,389,3,64,32,0,388,387,1,0,0,0, - 388,389,1,0,0,0,389,394,1,0,0,0,390,391,5,3,0,0,391,393,3,64,32,0,392, - 390,1,0,0,0,393,396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,397,1, - 0,0,0,396,394,1,0,0,0,397,398,5,65,0,0,398,61,1,0,0,0,399,407,3,182,91, - 0,400,407,5,92,0,0,401,407,5,93,0,0,402,407,5,94,0,0,403,407,3,186,93, - 0,404,407,3,60,30,0,405,407,3,104,52,0,406,399,1,0,0,0,406,400,1,0,0, - 0,406,401,1,0,0,0,406,402,1,0,0,0,406,403,1,0,0,0,406,404,1,0,0,0,406, - 405,1,0,0,0,407,63,1,0,0,0,408,413,5,92,0,0,409,413,5,93,0,0,410,413, - 5,94,0,0,411,413,3,186,93,0,412,408,1,0,0,0,412,409,1,0,0,0,412,410,1, - 0,0,0,412,411,1,0,0,0,413,65,1,0,0,0,414,415,3,48,24,0,415,67,1,0,0,0, - 416,417,5,103,0,0,417,69,1,0,0,0,418,419,7,1,0,0,419,71,1,0,0,0,420,421, - 5,61,0,0,421,426,3,50,25,0,422,423,5,3,0,0,423,425,3,50,25,0,424,422, - 1,0,0,0,425,428,1,0,0,0,426,427,1,0,0,0,426,424,1,0,0,0,427,73,1,0,0, - 0,428,426,1,0,0,0,429,433,3,32,16,0,430,433,3,34,17,0,431,433,5,97,0, - 0,432,429,1,0,0,0,432,430,1,0,0,0,432,431,1,0,0,0,433,75,1,0,0,0,434, - 436,3,74,37,0,435,434,1,0,0,0,436,439,1,0,0,0,437,435,1,0,0,0,437,438, - 1,0,0,0,438,77,1,0,0,0,439,437,1,0,0,0,440,441,5,73,0,0,441,443,3,52, - 26,0,442,444,3,72,36,0,443,442,1,0,0,0,443,444,1,0,0,0,444,445,1,0,0, - 0,445,446,5,66,0,0,446,447,3,76,38,0,447,448,5,67,0,0,448,79,1,0,0,0, - 449,454,3,30,15,0,450,454,3,82,41,0,451,454,3,68,34,0,452,454,5,97,0, - 0,453,449,1,0,0,0,453,450,1,0,0,0,453,451,1,0,0,0,453,452,1,0,0,0,454, - 81,1,0,0,0,455,457,3,24,12,0,456,455,1,0,0,0,457,460,1,0,0,0,458,459, - 1,0,0,0,458,456,1,0,0,0,459,461,1,0,0,0,460,458,1,0,0,0,461,462,3,66, - 33,0,462,463,3,52,26,0,463,464,5,64,0,0,464,465,3,84,42,0,465,467,5,65, - 0,0,466,468,3,86,43,0,467,466,1,0,0,0,467,468,1,0,0,0,468,469,1,0,0,0, - 469,470,5,100,0,0,470,83,1,0,0,0,471,472,5,64,0,0,472,473,3,84,42,0,473, - 474,5,65,0,0,474,477,1,0,0,0,475,477,8,2,0,0,476,471,1,0,0,0,476,475, - 1,0,0,0,477,480,1,0,0,0,478,476,1,0,0,0,478,479,1,0,0,0,479,85,1,0,0, - 0,480,478,1,0,0,0,481,482,5,61,0,0,482,483,5,92,0,0,483,87,1,0,0,0,484, - 486,3,80,40,0,485,484,1,0,0,0,486,489,1,0,0,0,487,485,1,0,0,0,487,488, - 1,0,0,0,488,89,1,0,0,0,489,487,1,0,0,0,490,492,3,24,12,0,491,490,1,0, - 0,0,492,495,1,0,0,0,493,494,1,0,0,0,493,491,1,0,0,0,494,496,1,0,0,0,495, - 493,1,0,0,0,496,497,5,74,0,0,497,499,3,52,26,0,498,500,3,72,36,0,499, - 498,1,0,0,0,499,500,1,0,0,0,500,501,1,0,0,0,501,502,5,66,0,0,502,503, - 3,88,44,0,503,504,5,67,0,0,504,91,1,0,0,0,505,506,3,66,33,0,506,507,3, - 52,26,0,507,508,5,60,0,0,508,93,1,0,0,0,509,510,5,89,0,0,510,511,3,52, - 26,0,511,512,5,60,0,0,512,95,1,0,0,0,513,517,3,92,46,0,514,517,3,94,47, - 0,515,517,5,97,0,0,516,513,1,0,0,0,516,514,1,0,0,0,516,515,1,0,0,0,517, - 97,1,0,0,0,518,520,3,96,48,0,519,518,1,0,0,0,520,523,1,0,0,0,521,519, - 1,0,0,0,521,522,1,0,0,0,522,99,1,0,0,0,523,521,1,0,0,0,524,525,5,87,0, - 0,525,526,3,52,26,0,526,527,5,66,0,0,527,528,3,98,49,0,528,529,5,67,0, - 0,529,101,1,0,0,0,530,531,3,62,31,0,531,103,1,0,0,0,532,533,5,66,0,0, - 533,538,3,102,51,0,534,535,5,3,0,0,535,537,3,102,51,0,536,534,1,0,0,0, - 537,540,1,0,0,0,538,536,1,0,0,0,538,539,1,0,0,0,539,541,1,0,0,0,540,538, - 1,0,0,0,541,542,5,67,0,0,542,105,1,0,0,0,543,544,5,90,0,0,544,545,5,63, - 0,0,545,546,3,52,26,0,546,547,5,60,0,0,547,107,1,0,0,0,548,550,3,24,12, - 0,549,548,1,0,0,0,550,553,1,0,0,0,551,552,1,0,0,0,551,549,1,0,0,0,552, - 554,1,0,0,0,553,551,1,0,0,0,554,555,3,182,91,0,555,556,5,63,0,0,556,557, - 3,70,35,0,557,558,5,60,0,0,558,109,1,0,0,0,559,564,3,106,53,0,560,564, - 3,108,54,0,561,564,3,36,18,0,562,564,5,97,0,0,563,559,1,0,0,0,563,560, - 1,0,0,0,563,561,1,0,0,0,563,562,1,0,0,0,564,111,1,0,0,0,565,567,3,110, - 55,0,566,565,1,0,0,0,567,570,1,0,0,0,568,566,1,0,0,0,568,569,1,0,0,0, - 569,113,1,0,0,0,570,568,1,0,0,0,571,573,3,24,12,0,572,571,1,0,0,0,573, - 576,1,0,0,0,574,575,1,0,0,0,574,572,1,0,0,0,575,577,1,0,0,0,576,574,1, - 0,0,0,577,578,5,75,0,0,578,580,3,52,26,0,579,581,3,72,36,0,580,579,1, - 0,0,0,580,581,1,0,0,0,581,582,1,0,0,0,582,583,5,66,0,0,583,584,3,112, - 56,0,584,585,5,67,0,0,585,115,1,0,0,0,586,594,3,106,53,0,587,594,3,108, - 54,0,588,594,3,36,18,0,589,594,3,38,19,0,590,594,3,40,20,0,591,594,3, - 44,22,0,592,594,5,97,0,0,593,586,1,0,0,0,593,587,1,0,0,0,593,588,1,0, - 0,0,593,589,1,0,0,0,593,590,1,0,0,0,593,591,1,0,0,0,593,592,1,0,0,0,594, - 117,1,0,0,0,595,597,3,116,58,0,596,595,1,0,0,0,597,600,1,0,0,0,598,596, - 1,0,0,0,598,599,1,0,0,0,599,119,1,0,0,0,600,598,1,0,0,0,601,603,3,24, - 12,0,602,601,1,0,0,0,603,606,1,0,0,0,604,605,1,0,0,0,604,602,1,0,0,0, - 605,607,1,0,0,0,606,604,1,0,0,0,607,608,5,76,0,0,608,610,3,52,26,0,609, - 611,3,72,36,0,610,609,1,0,0,0,610,611,1,0,0,0,611,612,1,0,0,0,612,613, - 5,66,0,0,613,614,3,118,59,0,614,615,5,67,0,0,615,121,1,0,0,0,616,619, - 3,106,53,0,617,619,5,97,0,0,618,616,1,0,0,0,618,617,1,0,0,0,619,123,1, - 0,0,0,620,622,3,122,61,0,621,620,1,0,0,0,622,625,1,0,0,0,623,621,1,0, - 0,0,623,624,1,0,0,0,624,125,1,0,0,0,625,623,1,0,0,0,626,627,5,77,0,0, - 627,629,3,52,26,0,628,630,3,72,36,0,629,628,1,0,0,0,629,630,1,0,0,0,630, - 631,1,0,0,0,631,632,5,66,0,0,632,633,3,124,62,0,633,634,5,67,0,0,634, - 127,1,0,0,0,635,636,7,3,0,0,636,129,1,0,0,0,637,638,3,128,64,0,638,639, - 5,63,0,0,639,640,3,62,31,0,640,641,5,60,0,0,641,131,1,0,0,0,642,644,3, - 24,12,0,643,642,1,0,0,0,644,647,1,0,0,0,645,646,1,0,0,0,645,643,1,0,0, - 0,646,648,1,0,0,0,647,645,1,0,0,0,648,649,5,80,0,0,649,650,3,66,33,0, - 650,651,3,52,26,0,651,652,5,60,0,0,652,133,1,0,0,0,653,657,3,130,65,0, - 654,657,3,132,66,0,655,657,5,97,0,0,656,653,1,0,0,0,656,654,1,0,0,0,656, - 655,1,0,0,0,657,135,1,0,0,0,658,660,3,134,67,0,659,658,1,0,0,0,660,663, - 1,0,0,0,661,659,1,0,0,0,661,662,1,0,0,0,662,137,1,0,0,0,663,661,1,0,0, - 0,664,665,5,79,0,0,665,666,3,52,26,0,666,667,5,66,0,0,667,668,3,136,68, - 0,668,669,5,67,0,0,669,139,1,0,0,0,670,676,3,106,53,0,671,676,3,108,54, - 0,672,676,3,36,18,0,673,676,3,138,69,0,674,676,5,97,0,0,675,670,1,0,0, - 0,675,671,1,0,0,0,675,672,1,0,0,0,675,673,1,0,0,0,675,674,1,0,0,0,676, - 141,1,0,0,0,677,679,3,140,70,0,678,677,1,0,0,0,679,682,1,0,0,0,680,678, - 1,0,0,0,680,681,1,0,0,0,681,143,1,0,0,0,682,680,1,0,0,0,683,685,3,24, - 12,0,684,683,1,0,0,0,685,688,1,0,0,0,686,687,1,0,0,0,686,684,1,0,0,0, - 687,689,1,0,0,0,688,686,1,0,0,0,689,690,5,78,0,0,690,692,3,52,26,0,691, - 693,3,72,36,0,692,691,1,0,0,0,692,693,1,0,0,0,693,694,1,0,0,0,694,695, - 5,66,0,0,695,696,3,142,71,0,696,697,5,67,0,0,697,145,1,0,0,0,698,702, - 3,108,54,0,699,702,5,97,0,0,700,702,3,44,22,0,701,698,1,0,0,0,701,699, - 1,0,0,0,701,700,1,0,0,0,702,147,1,0,0,0,703,705,3,146,73,0,704,703,1, - 0,0,0,705,708,1,0,0,0,706,704,1,0,0,0,706,707,1,0,0,0,707,149,1,0,0,0, - 708,706,1,0,0,0,709,711,3,24,12,0,710,709,1,0,0,0,711,714,1,0,0,0,712, - 713,1,0,0,0,712,710,1,0,0,0,713,715,1,0,0,0,714,712,1,0,0,0,715,716,5, - 82,0,0,716,718,3,52,26,0,717,719,3,72,36,0,718,717,1,0,0,0,718,719,1, - 0,0,0,719,720,1,0,0,0,720,721,5,66,0,0,721,722,3,148,74,0,722,723,5,67, - 0,0,723,151,1,0,0,0,724,727,3,108,54,0,725,727,5,97,0,0,726,724,1,0,0, - 0,726,725,1,0,0,0,727,153,1,0,0,0,728,730,3,152,76,0,729,728,1,0,0,0, - 730,733,1,0,0,0,731,729,1,0,0,0,731,732,1,0,0,0,732,155,1,0,0,0,733,731, - 1,0,0,0,734,736,3,24,12,0,735,734,1,0,0,0,736,739,1,0,0,0,737,738,1,0, - 0,0,737,735,1,0,0,0,738,740,1,0,0,0,739,737,1,0,0,0,740,741,5,81,0,0, - 741,743,3,52,26,0,742,744,3,72,36,0,743,742,1,0,0,0,743,744,1,0,0,0,744, - 745,1,0,0,0,745,746,5,66,0,0,746,747,3,154,77,0,747,748,5,67,0,0,748, - 157,1,0,0,0,749,751,3,24,12,0,750,749,1,0,0,0,751,754,1,0,0,0,752,753, - 1,0,0,0,752,750,1,0,0,0,753,755,1,0,0,0,754,752,1,0,0,0,755,756,3,66, - 33,0,756,757,3,52,26,0,757,758,5,60,0,0,758,159,1,0,0,0,759,762,3,158, - 79,0,760,762,5,97,0,0,761,759,1,0,0,0,761,760,1,0,0,0,762,161,1,0,0,0, - 763,765,3,160,80,0,764,763,1,0,0,0,765,768,1,0,0,0,766,764,1,0,0,0,766, - 767,1,0,0,0,767,163,1,0,0,0,768,766,1,0,0,0,769,771,3,24,12,0,770,769, - 1,0,0,0,771,774,1,0,0,0,772,773,1,0,0,0,772,770,1,0,0,0,773,775,1,0,0, - 0,774,772,1,0,0,0,775,776,5,84,0,0,776,778,3,52,26,0,777,779,3,72,36, - 0,778,777,1,0,0,0,778,779,1,0,0,0,779,780,1,0,0,0,780,781,5,66,0,0,781, - 782,3,162,81,0,782,783,5,67,0,0,783,165,1,0,0,0,784,786,3,24,12,0,785, - 784,1,0,0,0,786,789,1,0,0,0,787,788,1,0,0,0,787,785,1,0,0,0,788,790,1, - 0,0,0,789,787,1,0,0,0,790,791,5,83,0,0,791,793,3,52,26,0,792,794,3,72, - 36,0,793,792,1,0,0,0,793,794,1,0,0,0,794,795,1,0,0,0,795,796,5,66,0,0, - 796,797,3,162,81,0,797,798,5,67,0,0,798,167,1,0,0,0,799,801,3,24,12,0, - 800,799,1,0,0,0,801,804,1,0,0,0,802,800,1,0,0,0,802,803,1,0,0,0,803,805, - 1,0,0,0,804,802,1,0,0,0,805,806,3,52,26,0,806,807,5,60,0,0,807,810,1, - 0,0,0,808,810,5,97,0,0,809,802,1,0,0,0,809,808,1,0,0,0,810,169,1,0,0, - 0,811,813,3,168,84,0,812,811,1,0,0,0,813,816,1,0,0,0,814,812,1,0,0,0, - 814,815,1,0,0,0,815,171,1,0,0,0,816,814,1,0,0,0,817,818,5,85,0,0,818, - 819,3,52,26,0,819,820,5,66,0,0,820,821,3,170,85,0,821,822,5,67,0,0,822, - 173,1,0,0,0,823,826,3,52,26,0,824,825,5,63,0,0,825,827,3,62,31,0,826, - 824,1,0,0,0,826,827,1,0,0,0,827,828,1,0,0,0,828,829,5,60,0,0,829,175, - 1,0,0,0,830,833,3,174,87,0,831,833,5,97,0,0,832,830,1,0,0,0,832,831,1, - 0,0,0,833,177,1,0,0,0,834,836,3,176,88,0,835,834,1,0,0,0,836,839,1,0, - 0,0,837,835,1,0,0,0,837,838,1,0,0,0,838,179,1,0,0,0,839,837,1,0,0,0,840, - 841,5,91,0,0,841,842,3,52,26,0,842,843,5,66,0,0,843,844,3,178,89,0,844, - 845,5,67,0,0,845,181,1,0,0,0,846,847,7,4,0,0,847,183,1,0,0,0,848,849, - 7,5,0,0,849,185,1,0,0,0,850,851,7,6,0,0,851,187,1,0,0,0,80,203,205,218, - 225,229,234,241,262,270,279,286,292,296,313,320,327,338,351,366,370,373, - 388,394,406,412,426,432,437,443,453,458,467,476,478,487,493,499,516,521, - 538,551,563,568,574,580,593,598,604,610,618,623,629,645,656,661,675,680, - 686,692,701,706,712,718,726,731,737,743,752,761,766,772,778,787,793,802, - 809,814,826,832,837 + 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,208,8,0,10,0,12,0,211,9,0,1,0,1, + 0,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,3,2,223,8,2,1,2,1,2,1,2,4,2,228,8,2, + 11,2,12,2,229,1,2,1,2,3,2,234,8,2,1,3,4,3,237,8,3,11,3,12,3,238,1,4,1, + 4,1,4,1,4,1,4,1,4,3,4,247,8,4,1,5,1,5,1,5,1,5,1,5,5,5,254,8,5,10,5,12, + 5,257,9,5,1,5,1,5,1,6,4,6,262,8,6,11,6,12,6,263,1,7,1,7,1,7,1,7,1,8,1, + 8,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,1,12,1,13,1,13,3,13,285, + 8,13,1,14,1,14,1,14,1,14,5,14,291,8,14,10,14,12,14,294,9,14,1,14,1,14, + 1,15,1,15,1,16,1,16,3,16,302,8,16,1,16,1,16,1,17,5,17,307,8,17,10,17, + 12,17,310,9,17,1,17,1,17,1,17,3,17,315,8,17,1,17,1,17,3,17,319,8,17,1, + 17,1,17,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,20,5,20,334, + 8,20,10,20,12,20,337,9,20,1,20,1,20,1,20,1,20,3,20,343,8,20,1,20,1,20, + 1,21,5,21,348,8,21,10,21,12,21,351,9,21,1,21,1,21,1,21,1,21,1,21,1,22, + 5,22,359,8,22,10,22,12,22,362,9,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23, + 1,24,5,24,372,8,24,10,24,12,24,375,9,24,1,24,1,24,1,24,1,24,1,24,1,25, + 1,25,1,26,1,26,1,26,5,26,387,8,26,10,26,12,26,390,9,26,1,26,3,26,393, + 8,26,1,26,3,26,396,8,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31, + 1,31,1,32,1,32,1,32,3,32,411,8,32,1,32,1,32,5,32,415,8,32,10,32,12,32, + 418,9,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,429,8,33,1, + 34,1,34,1,34,1,34,3,34,435,8,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1, + 38,1,38,1,38,5,38,447,8,38,10,38,12,38,450,9,38,1,39,1,39,1,39,3,39,455, + 8,39,1,40,5,40,458,8,40,10,40,12,40,461,9,40,1,41,1,41,1,41,3,41,466, + 8,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,3,42,476,8,42,1,43,5,43, + 479,8,43,10,43,12,43,482,9,43,1,43,1,43,1,43,1,43,1,43,1,43,3,43,490, + 8,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,499,8,44,10,44,12,44,502, + 9,44,1,45,1,45,1,45,1,46,5,46,508,8,46,10,46,12,46,511,9,46,1,47,5,47, + 514,8,47,10,47,12,47,517,9,47,1,47,1,47,1,47,3,47,522,8,47,1,47,1,47, + 1,47,1,47,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,50,1,50,1,50,3,50, + 539,8,50,1,51,5,51,542,8,51,10,51,12,51,545,9,51,1,52,1,52,1,52,1,52, + 1,52,1,52,1,53,1,53,1,54,1,54,1,54,1,54,5,54,559,8,54,10,54,12,54,562, + 9,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,5,56,572,8,56,10,56,12,56, + 575,9,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,3,57,586,8,57,1, + 58,5,58,589,8,58,10,58,12,58,592,9,58,1,59,5,59,595,8,59,10,59,12,59, + 598,9,59,1,59,1,59,1,59,3,59,603,8,59,1,59,1,59,1,59,1,59,1,60,1,60,1, + 60,1,60,1,60,1,60,1,60,3,60,616,8,60,1,61,5,61,619,8,61,10,61,12,61,622, + 9,61,1,62,5,62,625,8,62,10,62,12,62,628,9,62,1,62,1,62,1,62,3,62,633, + 8,62,1,62,1,62,1,62,1,62,1,63,1,63,3,63,641,8,63,1,64,5,64,644,8,64,10, + 64,12,64,647,9,64,1,65,1,65,1,65,3,65,652,8,65,1,65,1,65,1,65,1,65,1, + 66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,5,68,666,8,68,10,68,12,68,669,9, + 68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,3,69,679,8,69,1,70,5,70,682, + 8,70,10,70,12,70,685,9,70,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72, + 1,72,1,72,3,72,698,8,72,1,73,5,73,701,8,73,10,73,12,73,704,9,73,1,74, + 5,74,707,8,74,10,74,12,74,710,9,74,1,74,1,74,1,74,3,74,715,8,74,1,74, + 1,74,1,74,1,74,1,75,1,75,1,75,3,75,724,8,75,1,76,5,76,727,8,76,10,76, + 12,76,730,9,76,1,77,5,77,733,8,77,10,77,12,77,736,9,77,1,77,1,77,1,77, + 3,77,741,8,77,1,77,1,77,1,77,1,77,1,78,1,78,3,78,749,8,78,1,79,5,79,752, + 8,79,10,79,12,79,755,9,79,1,80,5,80,758,8,80,10,80,12,80,761,9,80,1,80, + 1,80,1,80,3,80,766,8,80,1,80,1,80,1,80,1,80,1,81,5,81,773,8,81,10,81, + 12,81,776,9,81,1,81,1,81,1,81,1,81,1,82,1,82,3,82,784,8,82,1,83,5,83, + 787,8,83,10,83,12,83,790,9,83,1,84,5,84,793,8,84,10,84,12,84,796,9,84, + 1,84,1,84,1,84,3,84,801,8,84,1,84,1,84,1,84,1,84,1,85,5,85,808,8,85,10, + 85,12,85,811,9,85,1,85,1,85,1,85,3,85,816,8,85,1,85,1,85,1,85,1,85,1, + 86,5,86,823,8,86,10,86,12,86,826,9,86,1,86,1,86,1,86,1,86,3,86,832,8, + 86,1,87,5,87,835,8,87,10,87,12,87,838,9,87,1,88,1,88,1,88,1,88,1,88,1, + 88,1,89,1,89,1,89,3,89,849,8,89,1,89,1,89,1,90,1,90,3,90,855,8,90,1,91, + 5,91,858,8,91,10,91,12,91,861,9,91,1,92,1,92,1,92,1,92,1,92,1,92,1,93, + 1,93,1,94,1,94,1,95,1,95,1,95,18,308,335,349,360,373,448,480,515,573, + 596,626,667,708,734,759,774,794,809,0,96,0,2,4,6,8,10,12,14,16,18,20, + 22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66, + 68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110, + 112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146, + 148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182, + 184,186,188,190,0,7,5,0,45,46,48,57,59,59,64,65,99,99,2,0,92,92,95,95, + 1,0,64,65,1,0,8,12,1,0,13,25,1,0,26,44,1,0,70,71,901,0,209,1,0,0,0,2, + 214,1,0,0,0,4,233,1,0,0,0,6,236,1,0,0,0,8,246,1,0,0,0,10,248,1,0,0,0, + 12,261,1,0,0,0,14,265,1,0,0,0,16,269,1,0,0,0,18,273,1,0,0,0,20,275,1, + 0,0,0,22,277,1,0,0,0,24,279,1,0,0,0,26,282,1,0,0,0,28,286,1,0,0,0,30, + 297,1,0,0,0,32,299,1,0,0,0,34,308,1,0,0,0,36,322,1,0,0,0,38,326,1,0,0, + 0,40,335,1,0,0,0,42,349,1,0,0,0,44,360,1,0,0,0,46,368,1,0,0,0,48,373, + 1,0,0,0,50,381,1,0,0,0,52,383,1,0,0,0,54,397,1,0,0,0,56,399,1,0,0,0,58, + 401,1,0,0,0,60,403,1,0,0,0,62,405,1,0,0,0,64,407,1,0,0,0,66,428,1,0,0, + 0,68,434,1,0,0,0,70,436,1,0,0,0,72,438,1,0,0,0,74,440,1,0,0,0,76,442, + 1,0,0,0,78,454,1,0,0,0,80,459,1,0,0,0,82,462,1,0,0,0,84,475,1,0,0,0,86, + 480,1,0,0,0,88,500,1,0,0,0,90,503,1,0,0,0,92,509,1,0,0,0,94,515,1,0,0, + 0,96,527,1,0,0,0,98,531,1,0,0,0,100,538,1,0,0,0,102,543,1,0,0,0,104,546, + 1,0,0,0,106,552,1,0,0,0,108,554,1,0,0,0,110,565,1,0,0,0,112,573,1,0,0, + 0,114,585,1,0,0,0,116,590,1,0,0,0,118,596,1,0,0,0,120,615,1,0,0,0,122, + 620,1,0,0,0,124,626,1,0,0,0,126,640,1,0,0,0,128,645,1,0,0,0,130,648,1, + 0,0,0,132,657,1,0,0,0,134,659,1,0,0,0,136,667,1,0,0,0,138,678,1,0,0,0, + 140,683,1,0,0,0,142,686,1,0,0,0,144,697,1,0,0,0,146,702,1,0,0,0,148,708, + 1,0,0,0,150,723,1,0,0,0,152,728,1,0,0,0,154,734,1,0,0,0,156,748,1,0,0, + 0,158,753,1,0,0,0,160,759,1,0,0,0,162,774,1,0,0,0,164,783,1,0,0,0,166, + 788,1,0,0,0,168,794,1,0,0,0,170,809,1,0,0,0,172,831,1,0,0,0,174,836,1, + 0,0,0,176,839,1,0,0,0,178,845,1,0,0,0,180,854,1,0,0,0,182,859,1,0,0,0, + 184,862,1,0,0,0,186,868,1,0,0,0,188,870,1,0,0,0,190,872,1,0,0,0,192,208, + 3,82,41,0,193,208,3,94,47,0,194,208,3,104,52,0,195,208,3,148,74,0,196, + 208,3,118,59,0,197,208,3,124,62,0,198,208,3,130,65,0,199,208,3,154,77, + 0,200,208,3,160,80,0,201,208,3,170,85,0,202,208,3,168,84,0,203,208,3, + 176,88,0,204,208,3,184,92,0,205,208,3,2,1,0,206,208,5,97,0,0,207,192, + 1,0,0,0,207,193,1,0,0,0,207,194,1,0,0,0,207,195,1,0,0,0,207,196,1,0,0, + 0,207,197,1,0,0,0,207,198,1,0,0,0,207,199,1,0,0,0,207,200,1,0,0,0,207, + 201,1,0,0,0,207,202,1,0,0,0,207,203,1,0,0,0,207,204,1,0,0,0,207,205,1, + 0,0,0,207,206,1,0,0,0,208,211,1,0,0,0,209,207,1,0,0,0,209,210,1,0,0,0, + 210,212,1,0,0,0,211,209,1,0,0,0,212,213,5,0,0,1,213,1,1,0,0,0,214,215, + 5,1,0,0,215,216,3,56,28,0,216,217,3,24,12,0,217,218,5,60,0,0,218,3,1, + 0,0,0,219,220,3,60,30,0,220,221,5,2,0,0,221,223,1,0,0,0,222,219,1,0,0, + 0,222,223,1,0,0,0,223,224,1,0,0,0,224,227,3,20,10,0,225,226,5,47,0,0, + 226,228,3,20,10,0,227,225,1,0,0,0,228,229,1,0,0,0,229,227,1,0,0,0,229, + 230,1,0,0,0,230,234,1,0,0,0,231,234,3,22,11,0,232,234,3,6,3,0,233,222, + 1,0,0,0,233,231,1,0,0,0,233,232,1,0,0,0,234,5,1,0,0,0,235,237,3,8,4,0, + 236,235,1,0,0,0,237,238,1,0,0,0,238,236,1,0,0,0,238,239,1,0,0,0,239,7, + 1,0,0,0,240,247,3,14,7,0,241,247,3,64,32,0,242,247,3,10,5,0,243,247,3, + 16,8,0,244,247,3,66,33,0,245,247,3,18,9,0,246,240,1,0,0,0,246,241,1,0, + 0,0,246,242,1,0,0,0,246,243,1,0,0,0,246,244,1,0,0,0,246,245,1,0,0,0,247, + 9,1,0,0,0,248,249,5,92,0,0,249,250,5,64,0,0,250,255,3,12,6,0,251,252, + 5,3,0,0,252,254,3,12,6,0,253,251,1,0,0,0,254,257,1,0,0,0,255,253,1,0, + 0,0,255,256,1,0,0,0,256,258,1,0,0,0,257,255,1,0,0,0,258,259,5,65,0,0, + 259,11,1,0,0,0,260,262,3,8,4,0,261,260,1,0,0,0,262,263,1,0,0,0,263,261, + 1,0,0,0,263,264,1,0,0,0,264,13,1,0,0,0,265,266,3,60,30,0,266,267,5,2, + 0,0,267,268,3,66,33,0,268,15,1,0,0,0,269,270,3,56,28,0,270,271,5,62,0, + 0,271,272,3,56,28,0,272,17,1,0,0,0,273,274,7,0,0,0,274,19,1,0,0,0,275, + 276,3,66,33,0,276,21,1,0,0,0,277,278,5,96,0,0,278,23,1,0,0,0,279,280, + 5,63,0,0,280,281,3,4,2,0,281,25,1,0,0,0,282,284,3,56,28,0,283,285,3,24, + 12,0,284,283,1,0,0,0,284,285,1,0,0,0,285,27,1,0,0,0,286,287,5,68,0,0, + 287,292,3,26,13,0,288,289,5,3,0,0,289,291,3,26,13,0,290,288,1,0,0,0,291, + 294,1,0,0,0,292,290,1,0,0,0,292,293,1,0,0,0,293,295,1,0,0,0,294,292,1, + 0,0,0,295,296,5,69,0,0,296,29,1,0,0,0,297,298,5,93,0,0,298,31,1,0,0,0, + 299,301,5,68,0,0,300,302,3,30,15,0,301,300,1,0,0,0,301,302,1,0,0,0,302, + 303,1,0,0,0,303,304,5,69,0,0,304,33,1,0,0,0,305,307,3,28,14,0,306,305, + 1,0,0,0,307,310,1,0,0,0,308,309,1,0,0,0,308,306,1,0,0,0,309,311,1,0,0, + 0,310,308,1,0,0,0,311,312,3,70,35,0,312,314,3,56,28,0,313,315,3,32,16, + 0,314,313,1,0,0,0,314,315,1,0,0,0,315,318,1,0,0,0,316,317,5,63,0,0,317, + 319,3,66,33,0,318,316,1,0,0,0,318,319,1,0,0,0,319,320,1,0,0,0,320,321, + 5,60,0,0,321,35,1,0,0,0,322,323,5,86,0,0,323,324,3,56,28,0,324,325,5, + 60,0,0,325,37,1,0,0,0,326,327,5,4,0,0,327,328,3,56,28,0,328,329,5,63, + 0,0,329,330,3,66,33,0,330,331,5,60,0,0,331,39,1,0,0,0,332,334,3,28,14, + 0,333,332,1,0,0,0,334,337,1,0,0,0,335,336,1,0,0,0,335,333,1,0,0,0,336, + 338,1,0,0,0,337,335,1,0,0,0,338,339,5,5,0,0,339,342,3,56,28,0,340,341, + 5,63,0,0,341,343,3,108,54,0,342,340,1,0,0,0,342,343,1,0,0,0,343,344,1, + 0,0,0,344,345,5,60,0,0,345,41,1,0,0,0,346,348,3,28,14,0,347,346,1,0,0, + 0,348,351,1,0,0,0,349,350,1,0,0,0,349,347,1,0,0,0,350,352,1,0,0,0,351, + 349,1,0,0,0,352,353,5,6,0,0,353,354,5,63,0,0,354,355,3,108,54,0,355,356, + 5,60,0,0,356,43,1,0,0,0,357,359,3,28,14,0,358,357,1,0,0,0,359,362,1,0, + 0,0,360,361,1,0,0,0,360,358,1,0,0,0,361,363,1,0,0,0,362,360,1,0,0,0,363, + 364,5,7,0,0,364,365,5,63,0,0,365,366,3,108,54,0,366,367,5,60,0,0,367, + 45,1,0,0,0,368,369,5,99,0,0,369,47,1,0,0,0,370,372,3,28,14,0,371,370, + 1,0,0,0,372,375,1,0,0,0,373,374,1,0,0,0,373,371,1,0,0,0,374,376,1,0,0, + 0,375,373,1,0,0,0,376,377,3,188,94,0,377,378,5,63,0,0,378,379,3,66,33, + 0,379,380,5,60,0,0,380,49,1,0,0,0,381,382,5,92,0,0,382,51,1,0,0,0,383, + 392,3,50,25,0,384,388,5,51,0,0,385,387,3,62,31,0,386,385,1,0,0,0,387, + 390,1,0,0,0,388,386,1,0,0,0,388,389,1,0,0,0,389,391,1,0,0,0,390,388,1, + 0,0,0,391,393,5,50,0,0,392,384,1,0,0,0,392,393,1,0,0,0,393,395,1,0,0, + 0,394,396,3,46,23,0,395,394,1,0,0,0,395,396,1,0,0,0,396,53,1,0,0,0,397, + 398,5,92,0,0,398,55,1,0,0,0,399,400,5,92,0,0,400,57,1,0,0,0,401,402,5, + 92,0,0,402,59,1,0,0,0,403,404,5,92,0,0,404,61,1,0,0,0,405,406,5,92,0, + 0,406,63,1,0,0,0,407,408,5,92,0,0,408,410,5,64,0,0,409,411,3,68,34,0, + 410,409,1,0,0,0,410,411,1,0,0,0,411,416,1,0,0,0,412,413,5,3,0,0,413,415, + 3,68,34,0,414,412,1,0,0,0,415,418,1,0,0,0,416,414,1,0,0,0,416,417,1,0, + 0,0,417,419,1,0,0,0,418,416,1,0,0,0,419,420,5,65,0,0,420,65,1,0,0,0,421, + 429,3,186,93,0,422,429,5,92,0,0,423,429,5,93,0,0,424,429,5,94,0,0,425, + 429,3,190,95,0,426,429,3,64,32,0,427,429,3,108,54,0,428,421,1,0,0,0,428, + 422,1,0,0,0,428,423,1,0,0,0,428,424,1,0,0,0,428,425,1,0,0,0,428,426,1, + 0,0,0,428,427,1,0,0,0,429,67,1,0,0,0,430,435,5,92,0,0,431,435,5,93,0, + 0,432,435,5,94,0,0,433,435,3,190,95,0,434,430,1,0,0,0,434,431,1,0,0,0, + 434,432,1,0,0,0,434,433,1,0,0,0,435,69,1,0,0,0,436,437,3,52,26,0,437, + 71,1,0,0,0,438,439,5,103,0,0,439,73,1,0,0,0,440,441,7,1,0,0,441,75,1, + 0,0,0,442,443,5,61,0,0,443,448,3,54,27,0,444,445,5,3,0,0,445,447,3,54, + 27,0,446,444,1,0,0,0,447,450,1,0,0,0,448,449,1,0,0,0,448,446,1,0,0,0, + 449,77,1,0,0,0,450,448,1,0,0,0,451,455,3,36,18,0,452,455,3,38,19,0,453, + 455,5,97,0,0,454,451,1,0,0,0,454,452,1,0,0,0,454,453,1,0,0,0,455,79,1, + 0,0,0,456,458,3,78,39,0,457,456,1,0,0,0,458,461,1,0,0,0,459,457,1,0,0, + 0,459,460,1,0,0,0,460,81,1,0,0,0,461,459,1,0,0,0,462,463,5,73,0,0,463, + 465,3,56,28,0,464,466,3,76,38,0,465,464,1,0,0,0,465,466,1,0,0,0,466,467, + 1,0,0,0,467,468,5,66,0,0,468,469,3,80,40,0,469,470,5,67,0,0,470,83,1, + 0,0,0,471,476,3,34,17,0,472,476,3,86,43,0,473,476,3,72,36,0,474,476,5, + 97,0,0,475,471,1,0,0,0,475,472,1,0,0,0,475,473,1,0,0,0,475,474,1,0,0, + 0,476,85,1,0,0,0,477,479,3,28,14,0,478,477,1,0,0,0,479,482,1,0,0,0,480, + 481,1,0,0,0,480,478,1,0,0,0,481,483,1,0,0,0,482,480,1,0,0,0,483,484,3, + 70,35,0,484,485,3,56,28,0,485,486,5,64,0,0,486,487,3,88,44,0,487,489, + 5,65,0,0,488,490,3,90,45,0,489,488,1,0,0,0,489,490,1,0,0,0,490,491,1, + 0,0,0,491,492,5,100,0,0,492,87,1,0,0,0,493,494,5,64,0,0,494,495,3,88, + 44,0,495,496,5,65,0,0,496,499,1,0,0,0,497,499,8,2,0,0,498,493,1,0,0,0, + 498,497,1,0,0,0,499,502,1,0,0,0,500,498,1,0,0,0,500,501,1,0,0,0,501,89, + 1,0,0,0,502,500,1,0,0,0,503,504,5,61,0,0,504,505,5,92,0,0,505,91,1,0, + 0,0,506,508,3,84,42,0,507,506,1,0,0,0,508,511,1,0,0,0,509,507,1,0,0,0, + 509,510,1,0,0,0,510,93,1,0,0,0,511,509,1,0,0,0,512,514,3,28,14,0,513, + 512,1,0,0,0,514,517,1,0,0,0,515,516,1,0,0,0,515,513,1,0,0,0,516,518,1, + 0,0,0,517,515,1,0,0,0,518,519,5,74,0,0,519,521,3,56,28,0,520,522,3,76, + 38,0,521,520,1,0,0,0,521,522,1,0,0,0,522,523,1,0,0,0,523,524,5,66,0,0, + 524,525,3,92,46,0,525,526,5,67,0,0,526,95,1,0,0,0,527,528,3,70,35,0,528, + 529,3,56,28,0,529,530,5,60,0,0,530,97,1,0,0,0,531,532,5,89,0,0,532,533, + 3,56,28,0,533,534,5,60,0,0,534,99,1,0,0,0,535,539,3,96,48,0,536,539,3, + 98,49,0,537,539,5,97,0,0,538,535,1,0,0,0,538,536,1,0,0,0,538,537,1,0, + 0,0,539,101,1,0,0,0,540,542,3,100,50,0,541,540,1,0,0,0,542,545,1,0,0, + 0,543,541,1,0,0,0,543,544,1,0,0,0,544,103,1,0,0,0,545,543,1,0,0,0,546, + 547,5,87,0,0,547,548,3,56,28,0,548,549,5,66,0,0,549,550,3,102,51,0,550, + 551,5,67,0,0,551,105,1,0,0,0,552,553,3,66,33,0,553,107,1,0,0,0,554,555, + 5,66,0,0,555,560,3,106,53,0,556,557,5,3,0,0,557,559,3,106,53,0,558,556, + 1,0,0,0,559,562,1,0,0,0,560,558,1,0,0,0,560,561,1,0,0,0,561,563,1,0,0, + 0,562,560,1,0,0,0,563,564,5,67,0,0,564,109,1,0,0,0,565,566,5,90,0,0,566, + 567,5,63,0,0,567,568,3,56,28,0,568,569,5,60,0,0,569,111,1,0,0,0,570,572, + 3,28,14,0,571,570,1,0,0,0,572,575,1,0,0,0,573,574,1,0,0,0,573,571,1,0, + 0,0,574,576,1,0,0,0,575,573,1,0,0,0,576,577,3,186,93,0,577,578,5,63,0, + 0,578,579,3,74,37,0,579,580,5,60,0,0,580,113,1,0,0,0,581,586,3,110,55, + 0,582,586,3,112,56,0,583,586,3,40,20,0,584,586,5,97,0,0,585,581,1,0,0, + 0,585,582,1,0,0,0,585,583,1,0,0,0,585,584,1,0,0,0,586,115,1,0,0,0,587, + 589,3,114,57,0,588,587,1,0,0,0,589,592,1,0,0,0,590,588,1,0,0,0,590,591, + 1,0,0,0,591,117,1,0,0,0,592,590,1,0,0,0,593,595,3,28,14,0,594,593,1,0, + 0,0,595,598,1,0,0,0,596,597,1,0,0,0,596,594,1,0,0,0,597,599,1,0,0,0,598, + 596,1,0,0,0,599,600,5,75,0,0,600,602,3,56,28,0,601,603,3,76,38,0,602, + 601,1,0,0,0,602,603,1,0,0,0,603,604,1,0,0,0,604,605,5,66,0,0,605,606, + 3,116,58,0,606,607,5,67,0,0,607,119,1,0,0,0,608,616,3,110,55,0,609,616, + 3,112,56,0,610,616,3,40,20,0,611,616,3,42,21,0,612,616,3,44,22,0,613, + 616,3,48,24,0,614,616,5,97,0,0,615,608,1,0,0,0,615,609,1,0,0,0,615,610, + 1,0,0,0,615,611,1,0,0,0,615,612,1,0,0,0,615,613,1,0,0,0,615,614,1,0,0, + 0,616,121,1,0,0,0,617,619,3,120,60,0,618,617,1,0,0,0,619,622,1,0,0,0, + 620,618,1,0,0,0,620,621,1,0,0,0,621,123,1,0,0,0,622,620,1,0,0,0,623,625, + 3,28,14,0,624,623,1,0,0,0,625,628,1,0,0,0,626,627,1,0,0,0,626,624,1,0, + 0,0,627,629,1,0,0,0,628,626,1,0,0,0,629,630,5,76,0,0,630,632,3,56,28, + 0,631,633,3,76,38,0,632,631,1,0,0,0,632,633,1,0,0,0,633,634,1,0,0,0,634, + 635,5,66,0,0,635,636,3,122,61,0,636,637,5,67,0,0,637,125,1,0,0,0,638, + 641,3,110,55,0,639,641,5,97,0,0,640,638,1,0,0,0,640,639,1,0,0,0,641,127, + 1,0,0,0,642,644,3,126,63,0,643,642,1,0,0,0,644,647,1,0,0,0,645,643,1, + 0,0,0,645,646,1,0,0,0,646,129,1,0,0,0,647,645,1,0,0,0,648,649,5,77,0, + 0,649,651,3,56,28,0,650,652,3,76,38,0,651,650,1,0,0,0,651,652,1,0,0,0, + 652,653,1,0,0,0,653,654,5,66,0,0,654,655,3,128,64,0,655,656,5,67,0,0, + 656,131,1,0,0,0,657,658,7,3,0,0,658,133,1,0,0,0,659,660,3,132,66,0,660, + 661,5,63,0,0,661,662,3,66,33,0,662,663,5,60,0,0,663,135,1,0,0,0,664,666, + 3,28,14,0,665,664,1,0,0,0,666,669,1,0,0,0,667,668,1,0,0,0,667,665,1,0, + 0,0,668,670,1,0,0,0,669,667,1,0,0,0,670,671,5,80,0,0,671,672,3,70,35, + 0,672,673,3,56,28,0,673,674,5,60,0,0,674,137,1,0,0,0,675,679,3,134,67, + 0,676,679,3,136,68,0,677,679,5,97,0,0,678,675,1,0,0,0,678,676,1,0,0,0, + 678,677,1,0,0,0,679,139,1,0,0,0,680,682,3,138,69,0,681,680,1,0,0,0,682, + 685,1,0,0,0,683,681,1,0,0,0,683,684,1,0,0,0,684,141,1,0,0,0,685,683,1, + 0,0,0,686,687,5,79,0,0,687,688,3,56,28,0,688,689,5,66,0,0,689,690,3,140, + 70,0,690,691,5,67,0,0,691,143,1,0,0,0,692,698,3,110,55,0,693,698,3,112, + 56,0,694,698,3,40,20,0,695,698,3,142,71,0,696,698,5,97,0,0,697,692,1, + 0,0,0,697,693,1,0,0,0,697,694,1,0,0,0,697,695,1,0,0,0,697,696,1,0,0,0, + 698,145,1,0,0,0,699,701,3,144,72,0,700,699,1,0,0,0,701,704,1,0,0,0,702, + 700,1,0,0,0,702,703,1,0,0,0,703,147,1,0,0,0,704,702,1,0,0,0,705,707,3, + 28,14,0,706,705,1,0,0,0,707,710,1,0,0,0,708,709,1,0,0,0,708,706,1,0,0, + 0,709,711,1,0,0,0,710,708,1,0,0,0,711,712,5,78,0,0,712,714,3,56,28,0, + 713,715,3,76,38,0,714,713,1,0,0,0,714,715,1,0,0,0,715,716,1,0,0,0,716, + 717,5,66,0,0,717,718,3,146,73,0,718,719,5,67,0,0,719,149,1,0,0,0,720, + 724,3,112,56,0,721,724,5,97,0,0,722,724,3,48,24,0,723,720,1,0,0,0,723, + 721,1,0,0,0,723,722,1,0,0,0,724,151,1,0,0,0,725,727,3,150,75,0,726,725, + 1,0,0,0,727,730,1,0,0,0,728,726,1,0,0,0,728,729,1,0,0,0,729,153,1,0,0, + 0,730,728,1,0,0,0,731,733,3,28,14,0,732,731,1,0,0,0,733,736,1,0,0,0,734, + 735,1,0,0,0,734,732,1,0,0,0,735,737,1,0,0,0,736,734,1,0,0,0,737,738,5, + 82,0,0,738,740,3,56,28,0,739,741,3,76,38,0,740,739,1,0,0,0,740,741,1, + 0,0,0,741,742,1,0,0,0,742,743,5,66,0,0,743,744,3,152,76,0,744,745,5,67, + 0,0,745,155,1,0,0,0,746,749,3,112,56,0,747,749,5,97,0,0,748,746,1,0,0, + 0,748,747,1,0,0,0,749,157,1,0,0,0,750,752,3,156,78,0,751,750,1,0,0,0, + 752,755,1,0,0,0,753,751,1,0,0,0,753,754,1,0,0,0,754,159,1,0,0,0,755,753, + 1,0,0,0,756,758,3,28,14,0,757,756,1,0,0,0,758,761,1,0,0,0,759,760,1,0, + 0,0,759,757,1,0,0,0,760,762,1,0,0,0,761,759,1,0,0,0,762,763,5,81,0,0, + 763,765,3,56,28,0,764,766,3,76,38,0,765,764,1,0,0,0,765,766,1,0,0,0,766, + 767,1,0,0,0,767,768,5,66,0,0,768,769,3,158,79,0,769,770,5,67,0,0,770, + 161,1,0,0,0,771,773,3,28,14,0,772,771,1,0,0,0,773,776,1,0,0,0,774,775, + 1,0,0,0,774,772,1,0,0,0,775,777,1,0,0,0,776,774,1,0,0,0,777,778,3,70, + 35,0,778,779,3,56,28,0,779,780,5,60,0,0,780,163,1,0,0,0,781,784,3,162, + 81,0,782,784,5,97,0,0,783,781,1,0,0,0,783,782,1,0,0,0,784,165,1,0,0,0, + 785,787,3,164,82,0,786,785,1,0,0,0,787,790,1,0,0,0,788,786,1,0,0,0,788, + 789,1,0,0,0,789,167,1,0,0,0,790,788,1,0,0,0,791,793,3,28,14,0,792,791, + 1,0,0,0,793,796,1,0,0,0,794,795,1,0,0,0,794,792,1,0,0,0,795,797,1,0,0, + 0,796,794,1,0,0,0,797,798,5,84,0,0,798,800,3,56,28,0,799,801,3,76,38, + 0,800,799,1,0,0,0,800,801,1,0,0,0,801,802,1,0,0,0,802,803,5,66,0,0,803, + 804,3,166,83,0,804,805,5,67,0,0,805,169,1,0,0,0,806,808,3,28,14,0,807, + 806,1,0,0,0,808,811,1,0,0,0,809,810,1,0,0,0,809,807,1,0,0,0,810,812,1, + 0,0,0,811,809,1,0,0,0,812,813,5,83,0,0,813,815,3,56,28,0,814,816,3,76, + 38,0,815,814,1,0,0,0,815,816,1,0,0,0,816,817,1,0,0,0,817,818,5,66,0,0, + 818,819,3,166,83,0,819,820,5,67,0,0,820,171,1,0,0,0,821,823,3,28,14,0, + 822,821,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,0,824,825,1,0,0,0,825,827, + 1,0,0,0,826,824,1,0,0,0,827,828,3,56,28,0,828,829,5,60,0,0,829,832,1, + 0,0,0,830,832,5,97,0,0,831,824,1,0,0,0,831,830,1,0,0,0,832,173,1,0,0, + 0,833,835,3,172,86,0,834,833,1,0,0,0,835,838,1,0,0,0,836,834,1,0,0,0, + 836,837,1,0,0,0,837,175,1,0,0,0,838,836,1,0,0,0,839,840,5,85,0,0,840, + 841,3,56,28,0,841,842,5,66,0,0,842,843,3,174,87,0,843,844,5,67,0,0,844, + 177,1,0,0,0,845,848,3,56,28,0,846,847,5,63,0,0,847,849,3,66,33,0,848, + 846,1,0,0,0,848,849,1,0,0,0,849,850,1,0,0,0,850,851,5,60,0,0,851,179, + 1,0,0,0,852,855,3,178,89,0,853,855,5,97,0,0,854,852,1,0,0,0,854,853,1, + 0,0,0,855,181,1,0,0,0,856,858,3,180,90,0,857,856,1,0,0,0,858,861,1,0, + 0,0,859,857,1,0,0,0,859,860,1,0,0,0,860,183,1,0,0,0,861,859,1,0,0,0,862, + 863,5,91,0,0,863,864,3,56,28,0,864,865,5,66,0,0,865,866,3,182,91,0,866, + 867,5,67,0,0,867,185,1,0,0,0,868,869,7,4,0,0,869,187,1,0,0,0,870,871, + 7,5,0,0,871,189,1,0,0,0,872,873,7,6,0,0,873,191,1,0,0,0,82,207,209,222, + 229,233,238,246,255,263,284,292,301,308,314,318,335,342,349,360,373,388, + 392,395,410,416,428,434,448,454,459,465,475,480,489,498,500,509,515,521, + 538,543,560,573,585,590,596,602,615,620,626,632,640,645,651,667,678,683, + 697,702,708,714,723,728,734,740,748,753,759,765,774,783,788,794,800,809, + 815,824,831,836,848,854,859 }; staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0])); @@ -605,100 +612,100 @@ PrismParser::ParseContext* PrismParser::parse() { }); try { enterOuterAlt(_localctx, 1); - setState(205); + setState(209); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::T__0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 546039777) != 0) { - setState(203); + setState(207); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 0, _ctx)) { case 1: { - setState(188); + setState(192); layout_definition(); break; } case 2: { - setState(189); + setState(193); table_definition(); break; } case 3: { - setState(190); + setState(194); rt_definition(); break; } case 4: { - setState(191); + setState(195); workgraph_pso_definition(); break; } case 5: { - setState(192); + setState(196); compute_pso_definition(); break; } case 6: { - setState(193); + setState(197); graphics_pso_definition(); break; } case 7: { - setState(194); + setState(198); rtx_pso_definition(); break; } case 8: { - setState(195); + setState(199); rtx_pass_definition(); break; } case 9: { - setState(196); + setState(200); rtx_raygen_definition(); break; } case 10: { - setState(197); + setState(201); pass_definition(); break; } case 11: { - setState(198); + setState(202); view_definition(); break; } case 12: { - setState(199); + setState(203); pipeline_definition(); break; } case 13: { - setState(200); + setState(204); enum_definition(); break; } case 14: { - setState(201); + setState(205); const_definition(); break; } case 15: { - setState(202); + setState(206); match(PrismParser::COMMENT); break; } @@ -706,11 +713,11 @@ PrismParser::ParseContext* PrismParser::parse() { default: break; } - setState(207); + setState(211); _errHandler->sync(this); _la = _input->LA(1); } - setState(208); + setState(212); match(PrismParser::EOF); } @@ -779,13 +786,13 @@ PrismParser::Const_definitionContext* PrismParser::const_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(210); + setState(214); match(PrismParser::T__0); - setState(211); + setState(215); name_id(); - setState(212); + setState(216); options_assign(); - setState(213); + setState(217); match(PrismParser::SCOL); } @@ -870,19 +877,19 @@ PrismParser::Bind_optionContext* PrismParser::bind_option() { exitRule(); }); try { - setState(229); + setState(233); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 4, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(218); + setState(222); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 2, _ctx)) { case 1: { - setState(215); + setState(219); owner_id(); - setState(216); + setState(220); match(PrismParser::T__1); break; } @@ -890,17 +897,17 @@ PrismParser::Bind_optionContext* PrismParser::bind_option() { default: break; } - setState(220); + setState(224); flag_value_holder(); - setState(223); + setState(227); _errHandler->sync(this); _la = _input->LA(1); do { - setState(221); + setState(225); match(PrismParser::PIPE); - setState(222); + setState(226); flag_value_holder(); - setState(225); + setState(229); _errHandler->sync(this); _la = _input->LA(1); } while (_la == PrismParser::PIPE); @@ -909,14 +916,14 @@ PrismParser::Bind_optionContext* PrismParser::bind_option() { case 2: { enterOuterAlt(_localctx, 2); - setState(227); + setState(231); raw_value(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(228); + setState(232); cond_expr(); break; } @@ -988,18 +995,18 @@ PrismParser::Cond_exprContext* PrismParser::cond_expr() { }); try { enterOuterAlt(_localctx, 1); - setState(232); + setState(236); _errHandler->sync(this); _la = _input->LA(1); do { - setState(231); + setState(235); cond_term(); - setState(234); + setState(238); _errHandler->sync(this); _la = _input->LA(1); } while (((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & 594299229019561984) != 0 || (((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & 1879048391) != 0); + ((1ULL << _la) & 864515206661791744) != 0 || (((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & 36238786759) != 0); } catch (RecognitionException &e) { @@ -1025,6 +1032,10 @@ PrismParser::Function_idContext* PrismParser::Cond_termContext::function_id() { return getRuleContext(0); } +PrismParser::CallContext* PrismParser::Cond_termContext::call() { + return getRuleContext(0); +} + PrismParser::Member_refContext* PrismParser::Cond_termContext::member_ref() { return getRuleContext(0); } @@ -1074,40 +1085,47 @@ PrismParser::Cond_termContext* PrismParser::cond_term() { exitRule(); }); try { - setState(241); + setState(246); _errHandler->sync(this); switch (getInterpreter()->adaptivePredict(_input, 6, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(236); + setState(240); qualified_ref(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(237); + setState(241); function_id(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(238); - member_ref(); + setState(242); + call(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(239); - value_id(); + setState(243); + member_ref(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(240); + setState(244); + value_id(); + break; + } + + case 6: { + enterOuterAlt(_localctx, 6); + setState(245); cond_op(); break; } @@ -1126,6 +1144,184 @@ PrismParser::Cond_termContext* PrismParser::cond_term() { return _localctx; } +//----------------- CallContext ------------------------------------------------------------------ + +PrismParser::CallContext::CallContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* PrismParser::CallContext::ID() { + return getToken(PrismParser::ID, 0); +} + +tree::TerminalNode* PrismParser::CallContext::OPAR() { + return getToken(PrismParser::OPAR, 0); +} + +std::vector PrismParser::CallContext::call_arg() { + return getRuleContexts(); +} + +PrismParser::Call_argContext* PrismParser::CallContext::call_arg(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* PrismParser::CallContext::CPAR() { + return getToken(PrismParser::CPAR, 0); +} + + +size_t PrismParser::CallContext::getRuleIndex() const { + return PrismParser::RuleCall; +} + +void PrismParser::CallContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCall(this); +} + +void PrismParser::CallContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCall(this); +} + + +std::any PrismParser::CallContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCall(this); + else + return visitor->visitChildren(this); +} + +PrismParser::CallContext* PrismParser::call() { + CallContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 10, PrismParser::RuleCall); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(248); + match(PrismParser::ID); + setState(249); + match(PrismParser::OPAR); + setState(250); + call_arg(); + setState(255); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == PrismParser::T__2) { + setState(251); + match(PrismParser::T__2); + setState(252); + call_arg(); + setState(257); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(258); + match(PrismParser::CPAR); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Call_argContext ------------------------------------------------------------------ + +PrismParser::Call_argContext::Call_argContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector PrismParser::Call_argContext::cond_term() { + return getRuleContexts(); +} + +PrismParser::Cond_termContext* PrismParser::Call_argContext::cond_term(size_t i) { + return getRuleContext(i); +} + + +size_t PrismParser::Call_argContext::getRuleIndex() const { + return PrismParser::RuleCall_arg; +} + +void PrismParser::Call_argContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCall_arg(this); +} + +void PrismParser::Call_argContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCall_arg(this); +} + + +std::any PrismParser::Call_argContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCall_arg(this); + else + return visitor->visitChildren(this); +} + +PrismParser::Call_argContext* PrismParser::call_arg() { + Call_argContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 12, PrismParser::RuleCall_arg); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(261); + _errHandler->sync(this); + alt = 1; + do { + switch (alt) { + case 1: { + setState(260); + cond_term(); + break; + } + + default: + throw NoViableAltException(this); + } + setState(263); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 8, _ctx); + } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + //----------------- Qualified_refContext ------------------------------------------------------------------ PrismParser::Qualified_refContext::Qualified_refContext(ParserRuleContext *parent, size_t invokingState) @@ -1167,7 +1363,7 @@ std::any PrismParser::Qualified_refContext::accept(tree::ParseTreeVisitor *visit PrismParser::Qualified_refContext* PrismParser::qualified_ref() { Qualified_refContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 10, PrismParser::RuleQualified_ref); + enterRule(_localctx, 14, PrismParser::RuleQualified_ref); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1178,11 +1374,11 @@ PrismParser::Qualified_refContext* PrismParser::qualified_ref() { }); try { enterOuterAlt(_localctx, 1); - setState(243); + setState(265); owner_id(); - setState(244); + setState(266); match(PrismParser::T__1); - setState(245); + setState(267); value_id(); } @@ -1240,7 +1436,7 @@ std::any PrismParser::Member_refContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Member_refContext* PrismParser::member_ref() { Member_refContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 12, PrismParser::RuleMember_ref); + enterRule(_localctx, 16, PrismParser::RuleMember_ref); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1251,11 +1447,11 @@ PrismParser::Member_refContext* PrismParser::member_ref() { }); try { enterOuterAlt(_localctx, 1); - setState(247); + setState(269); name_id(); - setState(248); + setState(270); match(PrismParser::DOT); - setState(249); + setState(271); name_id(); } @@ -1318,6 +1514,26 @@ tree::TerminalNode* PrismParser::Cond_opContext::CPAR() { return getToken(PrismParser::CPAR, 0); } +tree::TerminalNode* PrismParser::Cond_opContext::PLUS() { + return getToken(PrismParser::PLUS, 0); +} + +tree::TerminalNode* PrismParser::Cond_opContext::MINUS() { + return getToken(PrismParser::MINUS, 0); +} + +tree::TerminalNode* PrismParser::Cond_opContext::POINTER() { + return getToken(PrismParser::POINTER, 0); +} + +tree::TerminalNode* PrismParser::Cond_opContext::DIV() { + return getToken(PrismParser::DIV, 0); +} + +tree::TerminalNode* PrismParser::Cond_opContext::MOD() { + return getToken(PrismParser::MOD, 0); +} + size_t PrismParser::Cond_opContext::getRuleIndex() const { return PrismParser::RuleCond_op; @@ -1345,7 +1561,7 @@ std::any PrismParser::Cond_opContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Cond_opContext* PrismParser::cond_op() { Cond_opContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 14, PrismParser::RuleCond_op); + enterRule(_localctx, 18, PrismParser::RuleCond_op); size_t _la = 0; #if __cplusplus > 201703L @@ -1357,10 +1573,10 @@ PrismParser::Cond_opContext* PrismParser::cond_op() { }); try { enterOuterAlt(_localctx, 1); - setState(251); + setState(273); _la = _input->LA(1); if (!((((_la - 45) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 45)) & 1589755) != 0)) { + ((1ULL << (_la - 45)) & 18014398511079419) != 0)) { _errHandler->recoverInline(this); } else { @@ -1415,7 +1631,7 @@ std::any PrismParser::Flag_value_holderContext::accept(tree::ParseTreeVisitor *v PrismParser::Flag_value_holderContext* PrismParser::flag_value_holder() { Flag_value_holderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 16, PrismParser::RuleFlag_value_holder); + enterRule(_localctx, 20, PrismParser::RuleFlag_value_holder); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1426,7 +1642,7 @@ PrismParser::Flag_value_holderContext* PrismParser::flag_value_holder() { }); try { enterOuterAlt(_localctx, 1); - setState(253); + setState(275); value_id(); } @@ -1476,7 +1692,7 @@ std::any PrismParser::Raw_valueContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Raw_valueContext* PrismParser::raw_value() { Raw_valueContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 18, PrismParser::RuleRaw_value); + enterRule(_localctx, 22, PrismParser::RuleRaw_value); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1487,7 +1703,7 @@ PrismParser::Raw_valueContext* PrismParser::raw_value() { }); try { enterOuterAlt(_localctx, 1); - setState(255); + setState(277); match(PrismParser::RAWEXPR); } @@ -1541,7 +1757,7 @@ std::any PrismParser::Options_assignContext::accept(tree::ParseTreeVisitor *visi PrismParser::Options_assignContext* PrismParser::options_assign() { Options_assignContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 20, PrismParser::RuleOptions_assign); + enterRule(_localctx, 24, PrismParser::RuleOptions_assign); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1552,9 +1768,9 @@ PrismParser::Options_assignContext* PrismParser::options_assign() { }); try { enterOuterAlt(_localctx, 1); - setState(257); + setState(279); match(PrismParser::ASSIGN); - setState(258); + setState(280); bind_option(); } @@ -1608,7 +1824,7 @@ std::any PrismParser::OptionContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::OptionContext* PrismParser::option() { OptionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 22, PrismParser::RuleOption); + enterRule(_localctx, 26, PrismParser::RuleOption); size_t _la = 0; #if __cplusplus > 201703L @@ -1620,14 +1836,14 @@ PrismParser::OptionContext* PrismParser::option() { }); try { enterOuterAlt(_localctx, 1); - setState(260); + setState(282); name_id(); - setState(262); + setState(284); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::ASSIGN) { - setState(261); + setState(283); options_assign(); } @@ -1690,7 +1906,7 @@ std::any PrismParser::Option_blockContext::accept(tree::ParseTreeVisitor *visito PrismParser::Option_blockContext* PrismParser::option_block() { Option_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 24, PrismParser::RuleOption_block); + enterRule(_localctx, 28, PrismParser::RuleOption_block); size_t _la = 0; #if __cplusplus > 201703L @@ -1702,23 +1918,23 @@ PrismParser::Option_blockContext* PrismParser::option_block() { }); try { enterOuterAlt(_localctx, 1); - setState(264); + setState(286); match(PrismParser::OSBRACE); - setState(265); + setState(287); option(); - setState(270); + setState(292); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::T__2) { - setState(266); + setState(288); match(PrismParser::T__2); - setState(267); + setState(289); option(); - setState(272); + setState(294); _errHandler->sync(this); _la = _input->LA(1); } - setState(273); + setState(295); match(PrismParser::CSBRACE); } @@ -1768,7 +1984,7 @@ std::any PrismParser::Array_count_idContext::accept(tree::ParseTreeVisitor *visi PrismParser::Array_count_idContext* PrismParser::array_count_id() { Array_count_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 26, PrismParser::RuleArray_count_id); + enterRule(_localctx, 30, PrismParser::RuleArray_count_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -1779,7 +1995,7 @@ PrismParser::Array_count_idContext* PrismParser::array_count_id() { }); try { enterOuterAlt(_localctx, 1); - setState(275); + setState(297); match(PrismParser::INT_SCALAR); } @@ -1837,7 +2053,7 @@ std::any PrismParser::ArrayContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::ArrayContext* PrismParser::array() { ArrayContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 28, PrismParser::RuleArray); + enterRule(_localctx, 32, PrismParser::RuleArray); size_t _la = 0; #if __cplusplus > 201703L @@ -1849,17 +2065,17 @@ PrismParser::ArrayContext* PrismParser::array() { }); try { enterOuterAlt(_localctx, 1); - setState(277); + setState(299); match(PrismParser::OSBRACE); - setState(279); + setState(301); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::INT_SCALAR) { - setState(278); + setState(300); array_count_id(); } - setState(281); + setState(303); match(PrismParser::CSBRACE); } @@ -1937,7 +2153,7 @@ std::any PrismParser::Value_declarationContext::accept(tree::ParseTreeVisitor *v PrismParser::Value_declarationContext* PrismParser::value_declaration() { Value_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 30, PrismParser::RuleValue_declaration); + enterRule(_localctx, 34, PrismParser::RuleValue_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -1950,41 +2166,41 @@ PrismParser::Value_declarationContext* PrismParser::value_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(286); + setState(308); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 10, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 12, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(283); + setState(305); option_block(); } - setState(288); + setState(310); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 10, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 12, _ctx); } - setState(289); + setState(311); type_id(); - setState(290); + setState(312); name_id(); - setState(292); + setState(314); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::OSBRACE) { - setState(291); + setState(313); array(); } - setState(296); + setState(318); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::ASSIGN) { - setState(294); + setState(316); match(PrismParser::ASSIGN); - setState(295); + setState(317); value_id(); } - setState(298); + setState(320); match(PrismParser::SCOL); } @@ -2042,7 +2258,7 @@ std::any PrismParser::Slot_declarationContext::accept(tree::ParseTreeVisitor *vi PrismParser::Slot_declarationContext* PrismParser::slot_declaration() { Slot_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 32, PrismParser::RuleSlot_declaration); + enterRule(_localctx, 36, PrismParser::RuleSlot_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2053,11 +2269,11 @@ PrismParser::Slot_declarationContext* PrismParser::slot_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(300); + setState(322); match(PrismParser::SLOT); - setState(301); + setState(323); name_id(); - setState(302); + setState(324); match(PrismParser::SCOL); } @@ -2119,7 +2335,7 @@ std::any PrismParser::Sampler_declarationContext::accept(tree::ParseTreeVisitor PrismParser::Sampler_declarationContext* PrismParser::sampler_declaration() { Sampler_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 34, PrismParser::RuleSampler_declaration); + enterRule(_localctx, 38, PrismParser::RuleSampler_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2130,15 +2346,15 @@ PrismParser::Sampler_declarationContext* PrismParser::sampler_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(304); + setState(326); match(PrismParser::T__3); - setState(305); + setState(327); name_id(); - setState(306); + setState(328); match(PrismParser::ASSIGN); - setState(307); + setState(329); value_id(); - setState(308); + setState(330); match(PrismParser::SCOL); } @@ -2208,7 +2424,7 @@ std::any PrismParser::Define_declarationContext::accept(tree::ParseTreeVisitor * PrismParser::Define_declarationContext* PrismParser::define_declaration() { Define_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 36, PrismParser::RuleDefine_declaration); + enterRule(_localctx, 40, PrismParser::RuleDefine_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -2221,33 +2437,33 @@ PrismParser::Define_declarationContext* PrismParser::define_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(313); + setState(335); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 13, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(310); + setState(332); option_block(); } - setState(315); + setState(337); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 13, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); } - setState(316); + setState(338); match(PrismParser::T__4); - setState(317); + setState(339); name_id(); - setState(320); + setState(342); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::ASSIGN) { - setState(318); + setState(340); match(PrismParser::ASSIGN); - setState(319); + setState(341); array_value_ids(); } - setState(322); + setState(344); match(PrismParser::SCOL); } @@ -2313,7 +2529,7 @@ std::any PrismParser::Rtv_formats_declarationContext::accept(tree::ParseTreeVisi PrismParser::Rtv_formats_declarationContext* PrismParser::rtv_formats_declaration() { Rtv_formats_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 38, PrismParser::RuleRtv_formats_declaration); + enterRule(_localctx, 42, PrismParser::RuleRtv_formats_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2325,25 +2541,25 @@ PrismParser::Rtv_formats_declarationContext* PrismParser::rtv_formats_declaratio try { size_t alt; enterOuterAlt(_localctx, 1); - setState(327); + setState(349); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(324); + setState(346); option_block(); } - setState(329); + setState(351); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 15, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); } - setState(330); + setState(352); match(PrismParser::T__5); - setState(331); + setState(353); match(PrismParser::ASSIGN); - setState(332); + setState(354); array_value_ids(); - setState(333); + setState(355); match(PrismParser::SCOL); } @@ -2409,7 +2625,7 @@ std::any PrismParser::Blends_declarationContext::accept(tree::ParseTreeVisitor * PrismParser::Blends_declarationContext* PrismParser::blends_declaration() { Blends_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 40, PrismParser::RuleBlends_declaration); + enterRule(_localctx, 44, PrismParser::RuleBlends_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2421,25 +2637,25 @@ PrismParser::Blends_declarationContext* PrismParser::blends_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(338); + setState(360); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 16, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 18, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(335); + setState(357); option_block(); } - setState(340); + setState(362); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 16, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 18, _ctx); } - setState(341); + setState(363); match(PrismParser::T__6); - setState(342); + setState(364); match(PrismParser::ASSIGN); - setState(343); + setState(365); array_value_ids(); - setState(344); + setState(366); match(PrismParser::SCOL); } @@ -2489,7 +2705,7 @@ std::any PrismParser::PointerContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::PointerContext* PrismParser::pointer() { PointerContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 42, PrismParser::RulePointer); + enterRule(_localctx, 46, PrismParser::RulePointer); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2500,7 +2716,7 @@ PrismParser::PointerContext* PrismParser::pointer() { }); try { enterOuterAlt(_localctx, 1); - setState(346); + setState(368); match(PrismParser::POINTER); } @@ -2570,7 +2786,7 @@ std::any PrismParser::Pso_paramContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Pso_paramContext* PrismParser::pso_param() { Pso_paramContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 44, PrismParser::RulePso_param); + enterRule(_localctx, 48, PrismParser::RulePso_param); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2582,25 +2798,25 @@ PrismParser::Pso_paramContext* PrismParser::pso_param() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(351); + setState(373); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 19, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(348); + setState(370); option_block(); } - setState(353); + setState(375); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 17, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 19, _ctx); } - setState(354); + setState(376); pso_param_id(); - setState(355); + setState(377); match(PrismParser::ASSIGN); - setState(356); + setState(378); value_id(); - setState(357); + setState(379); match(PrismParser::SCOL); } @@ -2650,7 +2866,7 @@ std::any PrismParser::Class_no_templateContext::accept(tree::ParseTreeVisitor *v PrismParser::Class_no_templateContext* PrismParser::class_no_template() { Class_no_templateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 46, PrismParser::RuleClass_no_template); + enterRule(_localctx, 50, PrismParser::RuleClass_no_template); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2661,7 +2877,7 @@ PrismParser::Class_no_templateContext* PrismParser::class_no_template() { }); try { enterOuterAlt(_localctx, 1); - setState(359); + setState(381); match(PrismParser::ID); } @@ -2731,7 +2947,7 @@ std::any PrismParser::Type_with_templateContext::accept(tree::ParseTreeVisitor * PrismParser::Type_with_templateContext* PrismParser::type_with_template() { Type_with_templateContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 48, PrismParser::RuleType_with_template); + enterRule(_localctx, 52, PrismParser::RuleType_with_template); size_t _la = 0; #if __cplusplus > 201703L @@ -2743,34 +2959,34 @@ PrismParser::Type_with_templateContext* PrismParser::type_with_template() { }); try { enterOuterAlt(_localctx, 1); - setState(361); + setState(383); class_no_template(); - setState(370); + setState(392); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::LT) { - setState(362); + setState(384); match(PrismParser::LT); - setState(366); + setState(388); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::ID) { - setState(363); + setState(385); template_id(); - setState(368); + setState(390); _errHandler->sync(this); _la = _input->LA(1); } - setState(369); + setState(391); match(PrismParser::GT); } - setState(373); + setState(395); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::POINTER) { - setState(372); + setState(394); pointer(); } @@ -2821,7 +3037,7 @@ std::any PrismParser::Inherit_idContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Inherit_idContext* PrismParser::inherit_id() { Inherit_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 50, PrismParser::RuleInherit_id); + enterRule(_localctx, 54, PrismParser::RuleInherit_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2832,7 +3048,7 @@ PrismParser::Inherit_idContext* PrismParser::inherit_id() { }); try { enterOuterAlt(_localctx, 1); - setState(375); + setState(397); match(PrismParser::ID); } @@ -2882,7 +3098,7 @@ std::any PrismParser::Name_idContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Name_idContext* PrismParser::name_id() { Name_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, PrismParser::RuleName_id); + enterRule(_localctx, 56, PrismParser::RuleName_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2893,7 +3109,7 @@ PrismParser::Name_idContext* PrismParser::name_id() { }); try { enterOuterAlt(_localctx, 1); - setState(377); + setState(399); match(PrismParser::ID); } @@ -2943,7 +3159,7 @@ std::any PrismParser::Option_idContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Option_idContext* PrismParser::option_id() { Option_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, PrismParser::RuleOption_id); + enterRule(_localctx, 58, PrismParser::RuleOption_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -2954,7 +3170,7 @@ PrismParser::Option_idContext* PrismParser::option_id() { }); try { enterOuterAlt(_localctx, 1); - setState(379); + setState(401); match(PrismParser::ID); } @@ -3004,7 +3220,7 @@ std::any PrismParser::Owner_idContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Owner_idContext* PrismParser::owner_id() { Owner_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, PrismParser::RuleOwner_id); + enterRule(_localctx, 60, PrismParser::RuleOwner_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3015,7 +3231,7 @@ PrismParser::Owner_idContext* PrismParser::owner_id() { }); try { enterOuterAlt(_localctx, 1); - setState(381); + setState(403); match(PrismParser::ID); } @@ -3065,7 +3281,7 @@ std::any PrismParser::Template_idContext::accept(tree::ParseTreeVisitor *visitor PrismParser::Template_idContext* PrismParser::template_id() { Template_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, PrismParser::RuleTemplate_id); + enterRule(_localctx, 62, PrismParser::RuleTemplate_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3076,7 +3292,7 @@ PrismParser::Template_idContext* PrismParser::template_id() { }); try { enterOuterAlt(_localctx, 1); - setState(383); + setState(405); match(PrismParser::ID); } @@ -3142,7 +3358,7 @@ std::any PrismParser::Function_idContext::accept(tree::ParseTreeVisitor *visitor PrismParser::Function_idContext* PrismParser::function_id() { Function_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, PrismParser::RuleFunction_id); + enterRule(_localctx, 64, PrismParser::RuleFunction_id); size_t _la = 0; #if __cplusplus > 201703L @@ -3154,32 +3370,32 @@ PrismParser::Function_idContext* PrismParser::function_id() { }); try { enterOuterAlt(_localctx, 1); - setState(385); + setState(407); match(PrismParser::ID); - setState(386); + setState(408); match(PrismParser::OPAR); - setState(388); + setState(410); _errHandler->sync(this); _la = _input->LA(1); if ((((_la - 70) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 70)) & 29360131) != 0) { - setState(387); + setState(409); value_id_ignore(); } - setState(394); + setState(416); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::T__2) { - setState(390); + setState(412); match(PrismParser::T__2); - setState(391); + setState(413); value_id_ignore(); - setState(396); + setState(418); _errHandler->sync(this); _la = _input->LA(1); } - setState(397); + setState(419); match(PrismParser::CPAR); } @@ -3253,7 +3469,7 @@ std::any PrismParser::Value_idContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Value_idContext* PrismParser::value_id() { Value_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, PrismParser::RuleValue_id); + enterRule(_localctx, 66, PrismParser::RuleValue_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3263,54 +3479,54 @@ PrismParser::Value_idContext* PrismParser::value_id() { exitRule(); }); try { - setState(406); + setState(428); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 23, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 25, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(399); + setState(421); shader_type(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(400); + setState(422); match(PrismParser::ID); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(401); + setState(423); match(PrismParser::INT_SCALAR); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(402); + setState(424); match(PrismParser::FLOAT_SCALAR); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(403); + setState(425); bool_type(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(404); + setState(426); function_id(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(405); + setState(427); array_value_ids(); break; } @@ -3378,7 +3594,7 @@ std::any PrismParser::Value_id_ignoreContext::accept(tree::ParseTreeVisitor *vis PrismParser::Value_id_ignoreContext* PrismParser::value_id_ignore() { Value_id_ignoreContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, PrismParser::RuleValue_id_ignore); + enterRule(_localctx, 68, PrismParser::RuleValue_id_ignore); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3388,26 +3604,26 @@ PrismParser::Value_id_ignoreContext* PrismParser::value_id_ignore() { exitRule(); }); try { - setState(412); + setState(434); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::ID: { enterOuterAlt(_localctx, 1); - setState(408); + setState(430); match(PrismParser::ID); break; } case PrismParser::INT_SCALAR: { enterOuterAlt(_localctx, 2); - setState(409); + setState(431); match(PrismParser::INT_SCALAR); break; } case PrismParser::FLOAT_SCALAR: { enterOuterAlt(_localctx, 3); - setState(410); + setState(432); match(PrismParser::FLOAT_SCALAR); break; } @@ -3415,7 +3631,7 @@ PrismParser::Value_id_ignoreContext* PrismParser::value_id_ignore() { case PrismParser::TRUE: case PrismParser::FALSE: { enterOuterAlt(_localctx, 4); - setState(411); + setState(433); bool_type(); break; } @@ -3471,7 +3687,7 @@ std::any PrismParser::Type_idContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Type_idContext* PrismParser::type_id() { Type_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, PrismParser::RuleType_id); + enterRule(_localctx, 70, PrismParser::RuleType_id); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3482,7 +3698,7 @@ PrismParser::Type_idContext* PrismParser::type_id() { }); try { enterOuterAlt(_localctx, 1); - setState(414); + setState(436); type_with_template(); } @@ -3532,7 +3748,7 @@ std::any PrismParser::Insert_blockContext::accept(tree::ParseTreeVisitor *visito PrismParser::Insert_blockContext* PrismParser::insert_block() { Insert_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, PrismParser::RuleInsert_block); + enterRule(_localctx, 72, PrismParser::RuleInsert_block); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3543,7 +3759,7 @@ PrismParser::Insert_blockContext* PrismParser::insert_block() { }); try { enterOuterAlt(_localctx, 1); - setState(416); + setState(438); match(PrismParser::INSERT_BLOCK); } @@ -3597,7 +3813,7 @@ std::any PrismParser::Shader_pathContext::accept(tree::ParseTreeVisitor *visitor PrismParser::Shader_pathContext* PrismParser::shader_path() { Shader_pathContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, PrismParser::RuleShader_path); + enterRule(_localctx, 74, PrismParser::RuleShader_path); size_t _la = 0; #if __cplusplus > 201703L @@ -3609,7 +3825,7 @@ PrismParser::Shader_pathContext* PrismParser::shader_path() { }); try { enterOuterAlt(_localctx, 1); - setState(418); + setState(440); _la = _input->LA(1); if (!(_la == PrismParser::ID @@ -3676,7 +3892,7 @@ std::any PrismParser::InheritContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::InheritContext* PrismParser::inherit() { InheritContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 72, PrismParser::RuleInherit); + enterRule(_localctx, 76, PrismParser::RuleInherit); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3688,23 +3904,23 @@ PrismParser::InheritContext* PrismParser::inherit() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(420); + setState(442); match(PrismParser::COLON); - setState(421); + setState(443); inherit_id(); - setState(426); + setState(448); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 27, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(422); + setState(444); match(PrismParser::T__2); - setState(423); + setState(445); inherit_id(); } - setState(428); + setState(450); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 27, _ctx); } } @@ -3762,7 +3978,7 @@ std::any PrismParser::Layout_statContext::accept(tree::ParseTreeVisitor *visitor PrismParser::Layout_statContext* PrismParser::layout_stat() { Layout_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, PrismParser::RuleLayout_stat); + enterRule(_localctx, 78, PrismParser::RuleLayout_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -3772,26 +3988,26 @@ PrismParser::Layout_statContext* PrismParser::layout_stat() { exitRule(); }); try { - setState(432); + setState(454); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::SLOT: { enterOuterAlt(_localctx, 1); - setState(429); + setState(451); slot_declaration(); break; } case PrismParser::T__3: { enterOuterAlt(_localctx, 2); - setState(430); + setState(452); sampler_declaration(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(431); + setState(453); match(PrismParser::COMMENT); break; } @@ -3851,7 +4067,7 @@ std::any PrismParser::Layout_blockContext::accept(tree::ParseTreeVisitor *visito PrismParser::Layout_blockContext* PrismParser::layout_block() { Layout_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, PrismParser::RuleLayout_block); + enterRule(_localctx, 80, PrismParser::RuleLayout_block); size_t _la = 0; #if __cplusplus > 201703L @@ -3863,15 +4079,15 @@ PrismParser::Layout_blockContext* PrismParser::layout_block() { }); try { enterOuterAlt(_localctx, 1); - setState(437); + setState(459); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::T__3 || _la == PrismParser::SLOT || _la == PrismParser::COMMENT) { - setState(434); + setState(456); layout_stat(); - setState(439); + setState(461); _errHandler->sync(this); _la = _input->LA(1); } @@ -3943,7 +4159,7 @@ std::any PrismParser::Layout_definitionContext::accept(tree::ParseTreeVisitor *v PrismParser::Layout_definitionContext* PrismParser::layout_definition() { Layout_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, PrismParser::RuleLayout_definition); + enterRule(_localctx, 82, PrismParser::RuleLayout_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -3955,23 +4171,23 @@ PrismParser::Layout_definitionContext* PrismParser::layout_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(440); + setState(462); match(PrismParser::LAYOUT); - setState(441); + setState(463); name_id(); - setState(443); + setState(465); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(442); + setState(464); inherit(); } - setState(445); + setState(467); match(PrismParser::OBRACE); - setState(446); + setState(468); layout_block(); - setState(447); + setState(469); match(PrismParser::CBRACE); } @@ -4033,7 +4249,7 @@ std::any PrismParser::Table_statContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Table_statContext* PrismParser::table_stat() { Table_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, PrismParser::RuleTable_stat); + enterRule(_localctx, 84, PrismParser::RuleTable_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4043,33 +4259,33 @@ PrismParser::Table_statContext* PrismParser::table_stat() { exitRule(); }); try { - setState(453); + setState(475); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 29, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 31, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(449); + setState(471); value_declaration(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(450); + setState(472); function_definition(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(451); + setState(473); insert_block(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(452); + setState(474); match(PrismParser::COMMENT); break; } @@ -4157,7 +4373,7 @@ std::any PrismParser::Function_definitionContext::accept(tree::ParseTreeVisitor PrismParser::Function_definitionContext* PrismParser::function_definition() { Function_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, PrismParser::RuleFunction_definition); + enterRule(_localctx, 86, PrismParser::RuleFunction_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -4170,37 +4386,37 @@ PrismParser::Function_definitionContext* PrismParser::function_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(458); + setState(480); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 30, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 32, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(455); + setState(477); option_block(); } - setState(460); + setState(482); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 30, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 32, _ctx); } - setState(461); + setState(483); type_id(); - setState(462); + setState(484); name_id(); - setState(463); + setState(485); match(PrismParser::OPAR); - setState(464); + setState(486); function_params(); - setState(465); + setState(487); match(PrismParser::CPAR); - setState(467); + setState(489); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(466); + setState(488); function_semantic(); } - setState(469); + setState(491); match(PrismParser::FUNC_BODY); } @@ -4270,7 +4486,7 @@ std::any PrismParser::Function_paramsContext::accept(tree::ParseTreeVisitor *vis PrismParser::Function_paramsContext* PrismParser::function_params() { Function_paramsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, PrismParser::RuleFunction_params); + enterRule(_localctx, 88, PrismParser::RuleFunction_params); size_t _la = 0; #if __cplusplus > 201703L @@ -4282,21 +4498,21 @@ PrismParser::Function_paramsContext* PrismParser::function_params() { }); try { enterOuterAlt(_localctx, 1); - setState(478); + setState(500); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & -2) != 0 || (((_la - 64) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 64)) & 1099511627773) != 0) { - setState(476); + setState(498); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::OPAR: { - setState(471); + setState(493); match(PrismParser::OPAR); - setState(472); + setState(494); function_params(); - setState(473); + setState(495); match(PrismParser::CPAR); break; } @@ -4402,7 +4618,7 @@ PrismParser::Function_paramsContext* PrismParser::function_params() { case PrismParser::INSERT_START: case PrismParser::INSERT_END: case PrismParser::INSERT_BLOCK: { - setState(475); + setState(497); _la = _input->LA(1); if (_la == 0 || _la == Token::EOF || (_la == PrismParser::OPAR @@ -4419,7 +4635,7 @@ PrismParser::Function_paramsContext* PrismParser::function_params() { default: throw NoViableAltException(this); } - setState(480); + setState(502); _errHandler->sync(this); _la = _input->LA(1); } @@ -4475,7 +4691,7 @@ std::any PrismParser::Function_semanticContext::accept(tree::ParseTreeVisitor *v PrismParser::Function_semanticContext* PrismParser::function_semantic() { Function_semanticContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, PrismParser::RuleFunction_semantic); + enterRule(_localctx, 90, PrismParser::RuleFunction_semantic); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4486,9 +4702,9 @@ PrismParser::Function_semanticContext* PrismParser::function_semantic() { }); try { enterOuterAlt(_localctx, 1); - setState(481); + setState(503); match(PrismParser::COLON); - setState(482); + setState(504); match(PrismParser::ID); } @@ -4542,7 +4758,7 @@ std::any PrismParser::Table_blockContext::accept(tree::ParseTreeVisitor *visitor PrismParser::Table_blockContext* PrismParser::table_block() { Table_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, PrismParser::RuleTable_block); + enterRule(_localctx, 92, PrismParser::RuleTable_block); size_t _la = 0; #if __cplusplus > 201703L @@ -4554,14 +4770,14 @@ PrismParser::Table_blockContext* PrismParser::table_block() { }); try { enterOuterAlt(_localctx, 1); - setState(487); + setState(509); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 34913386497) != 0) { - setState(484); + setState(506); table_stat(); - setState(489); + setState(511); _errHandler->sync(this); _la = _input->LA(1); } @@ -4641,7 +4857,7 @@ std::any PrismParser::Table_definitionContext::accept(tree::ParseTreeVisitor *vi PrismParser::Table_definitionContext* PrismParser::table_definition() { Table_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, PrismParser::RuleTable_definition); + enterRule(_localctx, 94, PrismParser::RuleTable_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -4654,35 +4870,35 @@ PrismParser::Table_definitionContext* PrismParser::table_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(493); + setState(515); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 35, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 37, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(490); + setState(512); option_block(); } - setState(495); + setState(517); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 35, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 37, _ctx); } - setState(496); + setState(518); match(PrismParser::STRUCT); - setState(497); + setState(519); name_id(); - setState(499); + setState(521); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(498); + setState(520); inherit(); } - setState(501); + setState(523); match(PrismParser::OBRACE); - setState(502); + setState(524); table_block(); - setState(503); + setState(525); match(PrismParser::CBRACE); } @@ -4740,7 +4956,7 @@ std::any PrismParser::Rt_color_declarationContext::accept(tree::ParseTreeVisitor PrismParser::Rt_color_declarationContext* PrismParser::rt_color_declaration() { Rt_color_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, PrismParser::RuleRt_color_declaration); + enterRule(_localctx, 96, PrismParser::RuleRt_color_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4751,11 +4967,11 @@ PrismParser::Rt_color_declarationContext* PrismParser::rt_color_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(505); + setState(527); type_id(); - setState(506); + setState(528); name_id(); - setState(507); + setState(529); match(PrismParser::SCOL); } @@ -4813,7 +5029,7 @@ std::any PrismParser::Rt_ds_declarationContext::accept(tree::ParseTreeVisitor *v PrismParser::Rt_ds_declarationContext* PrismParser::rt_ds_declaration() { Rt_ds_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, PrismParser::RuleRt_ds_declaration); + enterRule(_localctx, 98, PrismParser::RuleRt_ds_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4824,11 +5040,11 @@ PrismParser::Rt_ds_declarationContext* PrismParser::rt_ds_declaration() { }); try { enterOuterAlt(_localctx, 1); - setState(509); + setState(531); match(PrismParser::DSV); - setState(510); + setState(532); name_id(); - setState(511); + setState(533); match(PrismParser::SCOL); } @@ -4886,7 +5102,7 @@ std::any PrismParser::Rt_statContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Rt_statContext* PrismParser::rt_stat() { Rt_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, PrismParser::RuleRt_stat); + enterRule(_localctx, 100, PrismParser::RuleRt_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -4896,26 +5112,26 @@ PrismParser::Rt_statContext* PrismParser::rt_stat() { exitRule(); }); try { - setState(516); + setState(538); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::ID: { enterOuterAlt(_localctx, 1); - setState(513); + setState(535); rt_color_declaration(); break; } case PrismParser::DSV: { enterOuterAlt(_localctx, 2); - setState(514); + setState(536); rt_ds_declaration(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(515); + setState(537); match(PrismParser::COMMENT); break; } @@ -4975,7 +5191,7 @@ std::any PrismParser::Rt_blockContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Rt_blockContext* PrismParser::rt_block() { Rt_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, PrismParser::RuleRt_block); + enterRule(_localctx, 102, PrismParser::RuleRt_block); size_t _la = 0; #if __cplusplus > 201703L @@ -4987,14 +5203,14 @@ PrismParser::Rt_blockContext* PrismParser::rt_block() { }); try { enterOuterAlt(_localctx, 1); - setState(521); + setState(543); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 89) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 89)) & 265) != 0) { - setState(518); + setState(540); rt_stat(); - setState(523); + setState(545); _errHandler->sync(this); _la = _input->LA(1); } @@ -5062,7 +5278,7 @@ std::any PrismParser::Rt_definitionContext::accept(tree::ParseTreeVisitor *visit PrismParser::Rt_definitionContext* PrismParser::rt_definition() { Rt_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, PrismParser::RuleRt_definition); + enterRule(_localctx, 104, PrismParser::RuleRt_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5073,15 +5289,15 @@ PrismParser::Rt_definitionContext* PrismParser::rt_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(524); + setState(546); match(PrismParser::RT); - setState(525); + setState(547); name_id(); - setState(526); + setState(548); match(PrismParser::OBRACE); - setState(527); + setState(549); rt_block(); - setState(528); + setState(550); match(PrismParser::CBRACE); } @@ -5131,7 +5347,7 @@ std::any PrismParser::Array_value_holderContext::accept(tree::ParseTreeVisitor * PrismParser::Array_value_holderContext* PrismParser::array_value_holder() { Array_value_holderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, PrismParser::RuleArray_value_holder); + enterRule(_localctx, 106, PrismParser::RuleArray_value_holder); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5142,7 +5358,7 @@ PrismParser::Array_value_holderContext* PrismParser::array_value_holder() { }); try { enterOuterAlt(_localctx, 1); - setState(530); + setState(552); value_id(); } @@ -5204,7 +5420,7 @@ std::any PrismParser::Array_value_idsContext::accept(tree::ParseTreeVisitor *vis PrismParser::Array_value_idsContext* PrismParser::array_value_ids() { Array_value_idsContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, PrismParser::RuleArray_value_ids); + enterRule(_localctx, 108, PrismParser::RuleArray_value_ids); size_t _la = 0; #if __cplusplus > 201703L @@ -5216,23 +5432,23 @@ PrismParser::Array_value_idsContext* PrismParser::array_value_ids() { }); try { enterOuterAlt(_localctx, 1); - setState(532); + setState(554); match(PrismParser::OBRACE); - setState(533); + setState(555); array_value_holder(); - setState(538); + setState(560); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::T__2) { - setState(534); + setState(556); match(PrismParser::T__2); - setState(535); + setState(557); array_value_holder(); - setState(540); + setState(562); _errHandler->sync(this); _la = _input->LA(1); } - setState(541); + setState(563); match(PrismParser::CBRACE); } @@ -5294,7 +5510,7 @@ std::any PrismParser::Root_sigContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::Root_sigContext* PrismParser::root_sig() { Root_sigContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, PrismParser::RuleRoot_sig); + enterRule(_localctx, 110, PrismParser::RuleRoot_sig); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5305,13 +5521,13 @@ PrismParser::Root_sigContext* PrismParser::root_sig() { }); try { enterOuterAlt(_localctx, 1); - setState(543); + setState(565); match(PrismParser::ROOTSIG); - setState(544); + setState(566); match(PrismParser::ASSIGN); - setState(545); + setState(567); name_id(); - setState(546); + setState(568); match(PrismParser::SCOL); } @@ -5381,7 +5597,7 @@ std::any PrismParser::ShaderContext::accept(tree::ParseTreeVisitor *visitor) { PrismParser::ShaderContext* PrismParser::shader() { ShaderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, PrismParser::RuleShader); + enterRule(_localctx, 112, PrismParser::RuleShader); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5393,25 +5609,25 @@ PrismParser::ShaderContext* PrismParser::shader() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(551); + setState(573); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 40, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 42, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(548); + setState(570); option_block(); } - setState(553); + setState(575); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 40, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 42, _ctx); } - setState(554); + setState(576); shader_type(); - setState(555); + setState(577); match(PrismParser::ASSIGN); - setState(556); + setState(578); shader_path(); - setState(557); + setState(579); match(PrismParser::SCOL); } @@ -5473,7 +5689,7 @@ std::any PrismParser::Compute_pso_statContext::accept(tree::ParseTreeVisitor *vi PrismParser::Compute_pso_statContext* PrismParser::compute_pso_stat() { Compute_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, PrismParser::RuleCompute_pso_stat); + enterRule(_localctx, 114, PrismParser::RuleCompute_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5483,33 +5699,33 @@ PrismParser::Compute_pso_statContext* PrismParser::compute_pso_stat() { exitRule(); }); try { - setState(563); + setState(585); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 41, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 43, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(559); + setState(581); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(560); + setState(582); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(561); + setState(583); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(562); + setState(584); match(PrismParser::COMMENT); break; } @@ -5569,7 +5785,7 @@ std::any PrismParser::Compute_pso_blockContext::accept(tree::ParseTreeVisitor *v PrismParser::Compute_pso_blockContext* PrismParser::compute_pso_block() { Compute_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, PrismParser::RuleCompute_pso_block); + enterRule(_localctx, 116, PrismParser::RuleCompute_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5581,15 +5797,15 @@ PrismParser::Compute_pso_blockContext* PrismParser::compute_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(568); + setState(590); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 67100704) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541065217) != 0) { - setState(565); + setState(587); compute_pso_stat(); - setState(570); + setState(592); _errHandler->sync(this); _la = _input->LA(1); } @@ -5669,7 +5885,7 @@ std::any PrismParser::Compute_pso_definitionContext::accept(tree::ParseTreeVisit PrismParser::Compute_pso_definitionContext* PrismParser::compute_pso_definition() { Compute_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, PrismParser::RuleCompute_pso_definition); + enterRule(_localctx, 118, PrismParser::RuleCompute_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -5682,35 +5898,35 @@ PrismParser::Compute_pso_definitionContext* PrismParser::compute_pso_definition( try { size_t alt; enterOuterAlt(_localctx, 1); - setState(574); + setState(596); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 45, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(571); + setState(593); option_block(); } - setState(576); + setState(598); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 43, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 45, _ctx); } - setState(577); + setState(599); match(PrismParser::COMPUTE_PSO); - setState(578); + setState(600); name_id(); - setState(580); + setState(602); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(579); + setState(601); inherit(); } - setState(582); + setState(604); match(PrismParser::OBRACE); - setState(583); + setState(605); compute_pso_block(); - setState(584); + setState(606); match(PrismParser::CBRACE); } @@ -5784,7 +6000,7 @@ std::any PrismParser::Graphics_pso_statContext::accept(tree::ParseTreeVisitor *v PrismParser::Graphics_pso_statContext* PrismParser::graphics_pso_stat() { Graphics_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 116, PrismParser::RuleGraphics_pso_stat); + enterRule(_localctx, 120, PrismParser::RuleGraphics_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -5794,54 +6010,54 @@ PrismParser::Graphics_pso_statContext* PrismParser::graphics_pso_stat() { exitRule(); }); try { - setState(593); + setState(615); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 45, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 47, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(586); + setState(608); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(587); + setState(609); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(588); + setState(610); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(589); + setState(611); rtv_formats_declaration(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(590); + setState(612); blends_declaration(); break; } case 6: { enterOuterAlt(_localctx, 6); - setState(591); + setState(613); pso_param(); break; } case 7: { enterOuterAlt(_localctx, 7); - setState(592); + setState(614); match(PrismParser::COMMENT); break; } @@ -5901,7 +6117,7 @@ std::any PrismParser::Graphics_pso_blockContext::accept(tree::ParseTreeVisitor * PrismParser::Graphics_pso_blockContext* PrismParser::graphics_pso_block() { Graphics_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 118, PrismParser::RuleGraphics_pso_block); + enterRule(_localctx, 122, PrismParser::RuleGraphics_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -5913,15 +6129,15 @@ PrismParser::Graphics_pso_blockContext* PrismParser::graphics_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(598); + setState(620); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 35184372080864) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541065217) != 0) { - setState(595); + setState(617); graphics_pso_stat(); - setState(600); + setState(622); _errHandler->sync(this); _la = _input->LA(1); } @@ -6001,7 +6217,7 @@ std::any PrismParser::Graphics_pso_definitionContext::accept(tree::ParseTreeVisi PrismParser::Graphics_pso_definitionContext* PrismParser::graphics_pso_definition() { Graphics_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 120, PrismParser::RuleGraphics_pso_definition); + enterRule(_localctx, 124, PrismParser::RuleGraphics_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -6014,35 +6230,35 @@ PrismParser::Graphics_pso_definitionContext* PrismParser::graphics_pso_definitio try { size_t alt; enterOuterAlt(_localctx, 1); - setState(604); + setState(626); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(601); + setState(623); option_block(); } - setState(606); + setState(628); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); } - setState(607); + setState(629); match(PrismParser::GRAPHICS_PSO); - setState(608); + setState(630); name_id(); - setState(610); + setState(632); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(609); + setState(631); inherit(); } - setState(612); + setState(634); match(PrismParser::OBRACE); - setState(613); + setState(635); graphics_pso_block(); - setState(614); + setState(636); match(PrismParser::CBRACE); } @@ -6096,7 +6312,7 @@ std::any PrismParser::Rtx_pso_statContext::accept(tree::ParseTreeVisitor *visito PrismParser::Rtx_pso_statContext* PrismParser::rtx_pso_stat() { Rtx_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 122, PrismParser::RuleRtx_pso_stat); + enterRule(_localctx, 126, PrismParser::RuleRtx_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6106,19 +6322,19 @@ PrismParser::Rtx_pso_statContext* PrismParser::rtx_pso_stat() { exitRule(); }); try { - setState(618); + setState(640); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::ROOTSIG: { enterOuterAlt(_localctx, 1); - setState(616); + setState(638); root_sig(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(617); + setState(639); match(PrismParser::COMMENT); break; } @@ -6178,7 +6394,7 @@ std::any PrismParser::Rtx_pso_blockContext::accept(tree::ParseTreeVisitor *visit PrismParser::Rtx_pso_blockContext* PrismParser::rtx_pso_block() { Rtx_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 124, PrismParser::RuleRtx_pso_block); + enterRule(_localctx, 128, PrismParser::RuleRtx_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6190,15 +6406,15 @@ PrismParser::Rtx_pso_blockContext* PrismParser::rtx_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(623); + setState(645); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::ROOTSIG || _la == PrismParser::COMMENT) { - setState(620); + setState(642); rtx_pso_stat(); - setState(625); + setState(647); _errHandler->sync(this); _la = _input->LA(1); } @@ -6270,7 +6486,7 @@ std::any PrismParser::Rtx_pso_definitionContext::accept(tree::ParseTreeVisitor * PrismParser::Rtx_pso_definitionContext* PrismParser::rtx_pso_definition() { Rtx_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 126, PrismParser::RuleRtx_pso_definition); + enterRule(_localctx, 130, PrismParser::RuleRtx_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -6282,23 +6498,23 @@ PrismParser::Rtx_pso_definitionContext* PrismParser::rtx_pso_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(626); + setState(648); match(PrismParser::RAYTRACE_PSO); - setState(627); + setState(649); name_id(); - setState(629); + setState(651); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(628); + setState(650); inherit(); } - setState(631); + setState(653); match(PrismParser::OBRACE); - setState(632); + setState(654); rtx_pso_block(); - setState(633); + setState(655); match(PrismParser::CBRACE); } @@ -6344,7 +6560,7 @@ std::any PrismParser::Node_param_idContext::accept(tree::ParseTreeVisitor *visit PrismParser::Node_param_idContext* PrismParser::node_param_id() { Node_param_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, PrismParser::RuleNode_param_id); + enterRule(_localctx, 132, PrismParser::RuleNode_param_id); size_t _la = 0; #if __cplusplus > 201703L @@ -6356,7 +6572,7 @@ PrismParser::Node_param_idContext* PrismParser::node_param_id() { }); try { enterOuterAlt(_localctx, 1); - setState(635); + setState(657); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 7936) != 0)) { @@ -6426,7 +6642,7 @@ std::any PrismParser::Node_paramContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Node_paramContext* PrismParser::node_param() { Node_paramContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 130, PrismParser::RuleNode_param); + enterRule(_localctx, 134, PrismParser::RuleNode_param); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6437,13 +6653,13 @@ PrismParser::Node_paramContext* PrismParser::node_param() { }); try { enterOuterAlt(_localctx, 1); - setState(637); + setState(659); node_param_id(); - setState(638); + setState(660); match(PrismParser::ASSIGN); - setState(639); + setState(661); value_id(); - setState(640); + setState(662); match(PrismParser::SCOL); } @@ -6513,7 +6729,7 @@ std::any PrismParser::Node_output_declContext::accept(tree::ParseTreeVisitor *vi PrismParser::Node_output_declContext* PrismParser::node_output_decl() { Node_output_declContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, PrismParser::RuleNode_output_decl); + enterRule(_localctx, 136, PrismParser::RuleNode_output_decl); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6525,25 +6741,25 @@ PrismParser::Node_output_declContext* PrismParser::node_output_decl() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(645); + setState(667); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 54, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(642); + setState(664); option_block(); } - setState(647); + setState(669); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 54, _ctx); } - setState(648); + setState(670); match(PrismParser::NODE_OUTPUT); - setState(649); + setState(671); type_id(); - setState(650); + setState(672); name_id(); - setState(651); + setState(673); match(PrismParser::SCOL); } @@ -6601,7 +6817,7 @@ std::any PrismParser::Node_statContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Node_statContext* PrismParser::node_stat() { Node_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, PrismParser::RuleNode_stat); + enterRule(_localctx, 138, PrismParser::RuleNode_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6611,7 +6827,7 @@ PrismParser::Node_statContext* PrismParser::node_stat() { exitRule(); }); try { - setState(656); + setState(678); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::T__7: @@ -6620,7 +6836,7 @@ PrismParser::Node_statContext* PrismParser::node_stat() { case PrismParser::T__10: case PrismParser::T__11: { enterOuterAlt(_localctx, 1); - setState(653); + setState(675); node_param(); break; } @@ -6628,14 +6844,14 @@ PrismParser::Node_statContext* PrismParser::node_stat() { case PrismParser::OSBRACE: case PrismParser::NODE_OUTPUT: { enterOuterAlt(_localctx, 2); - setState(654); + setState(676); node_output_decl(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 3); - setState(655); + setState(677); match(PrismParser::COMMENT); break; } @@ -6695,7 +6911,7 @@ std::any PrismParser::Node_blockContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Node_blockContext* PrismParser::node_block() { Node_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, PrismParser::RuleNode_block); + enterRule(_localctx, 140, PrismParser::RuleNode_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6707,15 +6923,15 @@ PrismParser::Node_blockContext* PrismParser::node_block() { }); try { enterOuterAlt(_localctx, 1); - setState(661); + setState(683); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 7936) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 536875009) != 0) { - setState(658); + setState(680); node_stat(); - setState(663); + setState(685); _errHandler->sync(this); _la = _input->LA(1); } @@ -6783,7 +6999,7 @@ std::any PrismParser::Node_definitionContext::accept(tree::ParseTreeVisitor *vis PrismParser::Node_definitionContext* PrismParser::node_definition() { Node_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, PrismParser::RuleNode_definition); + enterRule(_localctx, 142, PrismParser::RuleNode_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6794,15 +7010,15 @@ PrismParser::Node_definitionContext* PrismParser::node_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(664); + setState(686); match(PrismParser::NODE); - setState(665); + setState(687); name_id(); - setState(666); + setState(688); match(PrismParser::OBRACE); - setState(667); + setState(689); node_block(); - setState(668); + setState(690); match(PrismParser::CBRACE); } @@ -6868,7 +7084,7 @@ std::any PrismParser::Workgraph_pso_statContext::accept(tree::ParseTreeVisitor * PrismParser::Workgraph_pso_statContext* PrismParser::workgraph_pso_stat() { Workgraph_pso_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, PrismParser::RuleWorkgraph_pso_stat); + enterRule(_localctx, 144, PrismParser::RuleWorkgraph_pso_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -6878,40 +7094,40 @@ PrismParser::Workgraph_pso_statContext* PrismParser::workgraph_pso_stat() { exitRule(); }); try { - setState(675); + setState(697); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 55, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 57, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(670); + setState(692); root_sig(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(671); + setState(693); shader(); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(672); + setState(694); define_declaration(); break; } case 4: { enterOuterAlt(_localctx, 4); - setState(673); + setState(695); node_definition(); break; } case 5: { enterOuterAlt(_localctx, 5); - setState(674); + setState(696); match(PrismParser::COMMENT); break; } @@ -6971,7 +7187,7 @@ std::any PrismParser::Workgraph_pso_blockContext::accept(tree::ParseTreeVisitor PrismParser::Workgraph_pso_blockContext* PrismParser::workgraph_pso_block() { Workgraph_pso_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 142, PrismParser::RuleWorkgraph_pso_block); + enterRule(_localctx, 146, PrismParser::RuleWorkgraph_pso_block); size_t _la = 0; #if __cplusplus > 201703L @@ -6983,15 +7199,15 @@ PrismParser::Workgraph_pso_blockContext* PrismParser::workgraph_pso_block() { }); try { enterOuterAlt(_localctx, 1); - setState(680); + setState(702); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 67100704) != 0 || (((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 541067265) != 0) { - setState(677); + setState(699); workgraph_pso_stat(); - setState(682); + setState(704); _errHandler->sync(this); _la = _input->LA(1); } @@ -7071,7 +7287,7 @@ std::any PrismParser::Workgraph_pso_definitionContext::accept(tree::ParseTreeVis PrismParser::Workgraph_pso_definitionContext* PrismParser::workgraph_pso_definition() { Workgraph_pso_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, PrismParser::RuleWorkgraph_pso_definition); + enterRule(_localctx, 148, PrismParser::RuleWorkgraph_pso_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7084,35 +7300,35 @@ PrismParser::Workgraph_pso_definitionContext* PrismParser::workgraph_pso_definit try { size_t alt; enterOuterAlt(_localctx, 1); - setState(686); + setState(708); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 59, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(683); + setState(705); option_block(); } - setState(688); + setState(710); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 59, _ctx); } - setState(689); + setState(711); match(PrismParser::WORKGRAPH_PSO); - setState(690); + setState(712); name_id(); - setState(692); + setState(714); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(691); + setState(713); inherit(); } - setState(694); + setState(716); match(PrismParser::OBRACE); - setState(695); + setState(717); workgraph_pso_block(); - setState(696); + setState(718); match(PrismParser::CBRACE); } @@ -7170,7 +7386,7 @@ std::any PrismParser::Rtx_pass_statContext::accept(tree::ParseTreeVisitor *visit PrismParser::Rtx_pass_statContext* PrismParser::rtx_pass_stat() { Rtx_pass_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, PrismParser::RuleRtx_pass_stat); + enterRule(_localctx, 150, PrismParser::RuleRtx_pass_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7180,26 +7396,26 @@ PrismParser::Rtx_pass_statContext* PrismParser::rtx_pass_stat() { exitRule(); }); try { - setState(701); + setState(723); _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 59, _ctx)) { + switch (getInterpreter()->adaptivePredict(_input, 61, _ctx)) { case 1: { enterOuterAlt(_localctx, 1); - setState(698); + setState(720); shader(); break; } case 2: { enterOuterAlt(_localctx, 2); - setState(699); + setState(721); match(PrismParser::COMMENT); break; } case 3: { enterOuterAlt(_localctx, 3); - setState(700); + setState(722); pso_param(); break; } @@ -7259,7 +7475,7 @@ std::any PrismParser::Rtx_pass_blockContext::accept(tree::ParseTreeVisitor *visi PrismParser::Rtx_pass_blockContext* PrismParser::rtx_pass_block() { Rtx_pass_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, PrismParser::RuleRtx_pass_block); + enterRule(_localctx, 152, PrismParser::RuleRtx_pass_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7271,16 +7487,16 @@ PrismParser::Rtx_pass_blockContext* PrismParser::rtx_pass_block() { }); try { enterOuterAlt(_localctx, 1); - setState(706); + setState(728); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 35184372080640) != 0 || _la == PrismParser::OSBRACE || _la == PrismParser::COMMENT) { - setState(703); + setState(725); rtx_pass_stat(); - setState(708); + setState(730); _errHandler->sync(this); _la = _input->LA(1); } @@ -7360,7 +7576,7 @@ std::any PrismParser::Rtx_pass_definitionContext::accept(tree::ParseTreeVisitor PrismParser::Rtx_pass_definitionContext* PrismParser::rtx_pass_definition() { Rtx_pass_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, PrismParser::RuleRtx_pass_definition); + enterRule(_localctx, 154, PrismParser::RuleRtx_pass_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7373,35 +7589,35 @@ PrismParser::Rtx_pass_definitionContext* PrismParser::rtx_pass_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(712); + setState(734); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 63, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(709); + setState(731); option_block(); } - setState(714); + setState(736); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 63, _ctx); } - setState(715); + setState(737); match(PrismParser::RAYTRACE_PASS); - setState(716); + setState(738); name_id(); - setState(718); + setState(740); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(717); + setState(739); inherit(); } - setState(720); + setState(742); match(PrismParser::OBRACE); - setState(721); + setState(743); rtx_pass_block(); - setState(722); + setState(744); match(PrismParser::CBRACE); } @@ -7455,7 +7671,7 @@ std::any PrismParser::Rtx_raygen_statContext::accept(tree::ParseTreeVisitor *vis PrismParser::Rtx_raygen_statContext* PrismParser::rtx_raygen_stat() { Rtx_raygen_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, PrismParser::RuleRtx_raygen_stat); + enterRule(_localctx, 156, PrismParser::RuleRtx_raygen_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7465,7 +7681,7 @@ PrismParser::Rtx_raygen_statContext* PrismParser::rtx_raygen_stat() { exitRule(); }); try { - setState(726); + setState(748); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::T__12: @@ -7483,14 +7699,14 @@ PrismParser::Rtx_raygen_statContext* PrismParser::rtx_raygen_stat() { case PrismParser::T__24: case PrismParser::OSBRACE: { enterOuterAlt(_localctx, 1); - setState(724); + setState(746); shader(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(725); + setState(747); match(PrismParser::COMMENT); break; } @@ -7550,7 +7766,7 @@ std::any PrismParser::Rtx_raygen_blockContext::accept(tree::ParseTreeVisitor *vi PrismParser::Rtx_raygen_blockContext* PrismParser::rtx_raygen_block() { Rtx_raygen_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, PrismParser::RuleRtx_raygen_block); + enterRule(_localctx, 158, PrismParser::RuleRtx_raygen_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7562,16 +7778,16 @@ PrismParser::Rtx_raygen_blockContext* PrismParser::rtx_raygen_block() { }); try { enterOuterAlt(_localctx, 1); - setState(731); + setState(753); _errHandler->sync(this); _la = _input->LA(1); while (((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 67100672) != 0 || _la == PrismParser::OSBRACE || _la == PrismParser::COMMENT) { - setState(728); + setState(750); rtx_raygen_stat(); - setState(733); + setState(755); _errHandler->sync(this); _la = _input->LA(1); } @@ -7651,7 +7867,7 @@ std::any PrismParser::Rtx_raygen_definitionContext::accept(tree::ParseTreeVisito PrismParser::Rtx_raygen_definitionContext* PrismParser::rtx_raygen_definition() { Rtx_raygen_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, PrismParser::RuleRtx_raygen_definition); + enterRule(_localctx, 160, PrismParser::RuleRtx_raygen_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -7664,35 +7880,35 @@ PrismParser::Rtx_raygen_definitionContext* PrismParser::rtx_raygen_definition() try { size_t alt; enterOuterAlt(_localctx, 1); - setState(737); + setState(759); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(734); + setState(756); option_block(); } - setState(739); + setState(761); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 65, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); } - setState(740); + setState(762); match(PrismParser::RAYTRACE_RAYGEN); - setState(741); + setState(763); name_id(); - setState(743); + setState(765); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(742); + setState(764); inherit(); } - setState(745); + setState(767); match(PrismParser::OBRACE); - setState(746); + setState(768); rtx_raygen_block(); - setState(747); + setState(769); match(PrismParser::CBRACE); } @@ -7758,7 +7974,7 @@ std::any PrismParser::View_declarationContext::accept(tree::ParseTreeVisitor *vi PrismParser::View_declarationContext* PrismParser::view_declaration() { View_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, PrismParser::RuleView_declaration); + enterRule(_localctx, 162, PrismParser::RuleView_declaration); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7770,23 +7986,23 @@ PrismParser::View_declarationContext* PrismParser::view_declaration() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(752); + setState(774); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 69, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(749); + setState(771); option_block(); } - setState(754); + setState(776); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 67, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 69, _ctx); } - setState(755); + setState(777); type_id(); - setState(756); + setState(778); name_id(); - setState(757); + setState(779); match(PrismParser::SCOL); } @@ -7840,7 +8056,7 @@ std::any PrismParser::View_statContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::View_statContext* PrismParser::view_stat() { View_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, PrismParser::RuleView_stat); + enterRule(_localctx, 164, PrismParser::RuleView_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -7850,20 +8066,20 @@ PrismParser::View_statContext* PrismParser::view_stat() { exitRule(); }); try { - setState(761); + setState(783); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::OSBRACE: case PrismParser::ID: { enterOuterAlt(_localctx, 1); - setState(759); + setState(781); view_declaration(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(760); + setState(782); match(PrismParser::COMMENT); break; } @@ -7923,7 +8139,7 @@ std::any PrismParser::View_blockContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::View_blockContext* PrismParser::view_block() { View_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, PrismParser::RuleView_block); + enterRule(_localctx, 166, PrismParser::RuleView_block); size_t _la = 0; #if __cplusplus > 201703L @@ -7935,14 +8151,14 @@ PrismParser::View_blockContext* PrismParser::view_block() { }); try { enterOuterAlt(_localctx, 1); - setState(766); + setState(788); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 553648129) != 0) { - setState(763); + setState(785); view_stat(); - setState(768); + setState(790); _errHandler->sync(this); _la = _input->LA(1); } @@ -8022,7 +8238,7 @@ std::any PrismParser::View_definitionContext::accept(tree::ParseTreeVisitor *vis PrismParser::View_definitionContext* PrismParser::view_definition() { View_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, PrismParser::RuleView_definition); + enterRule(_localctx, 168, PrismParser::RuleView_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -8035,35 +8251,35 @@ PrismParser::View_definitionContext* PrismParser::view_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(772); + setState(794); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(769); + setState(791); option_block(); } - setState(774); + setState(796); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 70, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); } - setState(775); + setState(797); match(PrismParser::VIEW); - setState(776); + setState(798); name_id(); - setState(778); + setState(800); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(777); + setState(799); inherit(); } - setState(780); + setState(802); match(PrismParser::OBRACE); - setState(781); + setState(803); view_block(); - setState(782); + setState(804); match(PrismParser::CBRACE); } @@ -8141,7 +8357,7 @@ std::any PrismParser::Pass_definitionContext::accept(tree::ParseTreeVisitor *vis PrismParser::Pass_definitionContext* PrismParser::pass_definition() { Pass_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, PrismParser::RulePass_definition); + enterRule(_localctx, 170, PrismParser::RulePass_definition); size_t _la = 0; #if __cplusplus > 201703L @@ -8154,35 +8370,35 @@ PrismParser::Pass_definitionContext* PrismParser::pass_definition() { try { size_t alt; enterOuterAlt(_localctx, 1); - setState(787); + setState(809); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 74, _ctx); while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { if (alt == 1 + 1) { - setState(784); + setState(806); option_block(); } - setState(789); + setState(811); _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 72, _ctx); + alt = getInterpreter()->adaptivePredict(_input, 74, _ctx); } - setState(790); + setState(812); match(PrismParser::PASS); - setState(791); + setState(813); name_id(); - setState(793); + setState(815); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::COLON) { - setState(792); + setState(814); inherit(); } - setState(795); + setState(817); match(PrismParser::OBRACE); - setState(796); + setState(818); view_block(); - setState(797); + setState(819); match(PrismParser::CBRACE); } @@ -8248,7 +8464,7 @@ std::any PrismParser::Pipeline_statContext::accept(tree::ParseTreeVisitor *visit PrismParser::Pipeline_statContext* PrismParser::pipeline_stat() { Pipeline_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, PrismParser::RulePipeline_stat); + enterRule(_localctx, 172, PrismParser::RulePipeline_stat); size_t _la = 0; #if __cplusplus > 201703L @@ -8259,32 +8475,32 @@ PrismParser::Pipeline_statContext* PrismParser::pipeline_stat() { exitRule(); }); try { - setState(809); + setState(831); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::OSBRACE: case PrismParser::ID: { enterOuterAlt(_localctx, 1); - setState(802); + setState(824); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::OSBRACE) { - setState(799); + setState(821); option_block(); - setState(804); + setState(826); _errHandler->sync(this); _la = _input->LA(1); } - setState(805); + setState(827); name_id(); - setState(806); + setState(828); match(PrismParser::SCOL); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(808); + setState(830); match(PrismParser::COMMENT); break; } @@ -8344,7 +8560,7 @@ std::any PrismParser::Pipeline_blockContext::accept(tree::ParseTreeVisitor *visi PrismParser::Pipeline_blockContext* PrismParser::pipeline_block() { Pipeline_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, PrismParser::RulePipeline_block); + enterRule(_localctx, 174, PrismParser::RulePipeline_block); size_t _la = 0; #if __cplusplus > 201703L @@ -8356,14 +8572,14 @@ PrismParser::Pipeline_blockContext* PrismParser::pipeline_block() { }); try { enterOuterAlt(_localctx, 1); - setState(814); + setState(836); _errHandler->sync(this); _la = _input->LA(1); while ((((_la - 68) & ~ 0x3fULL) == 0) && ((1ULL << (_la - 68)) & 553648129) != 0) { - setState(811); + setState(833); pipeline_stat(); - setState(816); + setState(838); _errHandler->sync(this); _la = _input->LA(1); } @@ -8431,7 +8647,7 @@ std::any PrismParser::Pipeline_definitionContext::accept(tree::ParseTreeVisitor PrismParser::Pipeline_definitionContext* PrismParser::pipeline_definition() { Pipeline_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, PrismParser::RulePipeline_definition); + enterRule(_localctx, 176, PrismParser::RulePipeline_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8442,15 +8658,15 @@ PrismParser::Pipeline_definitionContext* PrismParser::pipeline_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(817); + setState(839); match(PrismParser::PIPELINE); - setState(818); + setState(840); name_id(); - setState(819); + setState(841); match(PrismParser::OBRACE); - setState(820); + setState(842); pipeline_block(); - setState(821); + setState(843); match(PrismParser::CBRACE); } @@ -8512,7 +8728,7 @@ std::any PrismParser::Enum_value_declarationContext::accept(tree::ParseTreeVisit PrismParser::Enum_value_declarationContext* PrismParser::enum_value_declaration() { Enum_value_declarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, PrismParser::RuleEnum_value_declaration); + enterRule(_localctx, 178, PrismParser::RuleEnum_value_declaration); size_t _la = 0; #if __cplusplus > 201703L @@ -8524,19 +8740,19 @@ PrismParser::Enum_value_declarationContext* PrismParser::enum_value_declaration( }); try { enterOuterAlt(_localctx, 1); - setState(823); + setState(845); name_id(); - setState(826); + setState(848); _errHandler->sync(this); _la = _input->LA(1); if (_la == PrismParser::ASSIGN) { - setState(824); + setState(846); match(PrismParser::ASSIGN); - setState(825); + setState(847); value_id(); } - setState(828); + setState(850); match(PrismParser::SCOL); } @@ -8590,7 +8806,7 @@ std::any PrismParser::Enum_statContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Enum_statContext* PrismParser::enum_stat() { Enum_statContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, PrismParser::RuleEnum_stat); + enterRule(_localctx, 180, PrismParser::RuleEnum_stat); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8600,19 +8816,19 @@ PrismParser::Enum_statContext* PrismParser::enum_stat() { exitRule(); }); try { - setState(832); + setState(854); _errHandler->sync(this); switch (_input->LA(1)) { case PrismParser::ID: { enterOuterAlt(_localctx, 1); - setState(830); + setState(852); enum_value_declaration(); break; } case PrismParser::COMMENT: { enterOuterAlt(_localctx, 2); - setState(831); + setState(853); match(PrismParser::COMMENT); break; } @@ -8672,7 +8888,7 @@ std::any PrismParser::Enum_blockContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Enum_blockContext* PrismParser::enum_block() { Enum_blockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, PrismParser::RuleEnum_block); + enterRule(_localctx, 182, PrismParser::RuleEnum_block); size_t _la = 0; #if __cplusplus > 201703L @@ -8684,15 +8900,15 @@ PrismParser::Enum_blockContext* PrismParser::enum_block() { }); try { enterOuterAlt(_localctx, 1); - setState(837); + setState(859); _errHandler->sync(this); _la = _input->LA(1); while (_la == PrismParser::ID || _la == PrismParser::COMMENT) { - setState(834); + setState(856); enum_stat(); - setState(839); + setState(861); _errHandler->sync(this); _la = _input->LA(1); } @@ -8760,7 +8976,7 @@ std::any PrismParser::Enum_definitionContext::accept(tree::ParseTreeVisitor *vis PrismParser::Enum_definitionContext* PrismParser::enum_definition() { Enum_definitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, PrismParser::RuleEnum_definition); + enterRule(_localctx, 184, PrismParser::RuleEnum_definition); #if __cplusplus > 201703L auto onExit = finally([=, this] { @@ -8771,15 +8987,15 @@ PrismParser::Enum_definitionContext* PrismParser::enum_definition() { }); try { enterOuterAlt(_localctx, 1); - setState(840); + setState(862); match(PrismParser::ENUM); - setState(841); + setState(863); name_id(); - setState(842); + setState(864); match(PrismParser::OBRACE); - setState(843); + setState(865); enum_block(); - setState(844); + setState(866); match(PrismParser::CBRACE); } @@ -8825,7 +9041,7 @@ std::any PrismParser::Shader_typeContext::accept(tree::ParseTreeVisitor *visitor PrismParser::Shader_typeContext* PrismParser::shader_type() { Shader_typeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, PrismParser::RuleShader_type); + enterRule(_localctx, 186, PrismParser::RuleShader_type); size_t _la = 0; #if __cplusplus > 201703L @@ -8837,7 +9053,7 @@ PrismParser::Shader_typeContext* PrismParser::shader_type() { }); try { enterOuterAlt(_localctx, 1); - setState(846); + setState(868); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 67100672) != 0)) { @@ -8891,7 +9107,7 @@ std::any PrismParser::Pso_param_idContext::accept(tree::ParseTreeVisitor *visito PrismParser::Pso_param_idContext* PrismParser::pso_param_id() { Pso_param_idContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, PrismParser::RulePso_param_id); + enterRule(_localctx, 188, PrismParser::RulePso_param_id); size_t _la = 0; #if __cplusplus > 201703L @@ -8903,7 +9119,7 @@ PrismParser::Pso_param_idContext* PrismParser::pso_param_id() { }); try { enterOuterAlt(_localctx, 1); - setState(848); + setState(870); _la = _input->LA(1); if (!(((_la & ~ 0x3fULL) == 0) && ((1ULL << _la) & 35184304979968) != 0)) { @@ -8965,7 +9181,7 @@ std::any PrismParser::Bool_typeContext::accept(tree::ParseTreeVisitor *visitor) PrismParser::Bool_typeContext* PrismParser::bool_type() { Bool_typeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, PrismParser::RuleBool_type); + enterRule(_localctx, 190, PrismParser::RuleBool_type); size_t _la = 0; #if __cplusplus > 201703L @@ -8977,7 +9193,7 @@ PrismParser::Bool_typeContext* PrismParser::bool_type() { }); try { enterOuterAlt(_localctx, 1); - setState(850); + setState(872); _la = _input->LA(1); if (!(_la == PrismParser::TRUE diff --git a/sources/Prism/.antlr/PrismParser.h b/sources/Prism/.antlr/PrismParser.h index a87297dbb..1687a4a6c 100644 --- a/sources/Prism/.antlr/PrismParser.h +++ b/sources/Prism/.antlr/PrismParser.h @@ -34,34 +34,34 @@ class PrismParser : public antlr4::Parser { enum { RuleParse = 0, RuleConst_definition = 1, RuleBind_option = 2, RuleCond_expr = 3, - RuleCond_term = 4, RuleQualified_ref = 5, RuleMember_ref = 6, RuleCond_op = 7, - RuleFlag_value_holder = 8, RuleRaw_value = 9, RuleOptions_assign = 10, - RuleOption = 11, RuleOption_block = 12, RuleArray_count_id = 13, RuleArray = 14, - RuleValue_declaration = 15, RuleSlot_declaration = 16, RuleSampler_declaration = 17, - RuleDefine_declaration = 18, RuleRtv_formats_declaration = 19, RuleBlends_declaration = 20, - RulePointer = 21, RulePso_param = 22, RuleClass_no_template = 23, RuleType_with_template = 24, - RuleInherit_id = 25, RuleName_id = 26, RuleOption_id = 27, RuleOwner_id = 28, - RuleTemplate_id = 29, RuleFunction_id = 30, RuleValue_id = 31, RuleValue_id_ignore = 32, - RuleType_id = 33, RuleInsert_block = 34, RuleShader_path = 35, RuleInherit = 36, - RuleLayout_stat = 37, RuleLayout_block = 38, RuleLayout_definition = 39, - RuleTable_stat = 40, RuleFunction_definition = 41, RuleFunction_params = 42, - RuleFunction_semantic = 43, RuleTable_block = 44, RuleTable_definition = 45, - RuleRt_color_declaration = 46, RuleRt_ds_declaration = 47, RuleRt_stat = 48, - RuleRt_block = 49, RuleRt_definition = 50, RuleArray_value_holder = 51, - RuleArray_value_ids = 52, RuleRoot_sig = 53, RuleShader = 54, RuleCompute_pso_stat = 55, - RuleCompute_pso_block = 56, RuleCompute_pso_definition = 57, RuleGraphics_pso_stat = 58, - RuleGraphics_pso_block = 59, RuleGraphics_pso_definition = 60, RuleRtx_pso_stat = 61, - RuleRtx_pso_block = 62, RuleRtx_pso_definition = 63, RuleNode_param_id = 64, - RuleNode_param = 65, RuleNode_output_decl = 66, RuleNode_stat = 67, - RuleNode_block = 68, RuleNode_definition = 69, RuleWorkgraph_pso_stat = 70, - RuleWorkgraph_pso_block = 71, RuleWorkgraph_pso_definition = 72, RuleRtx_pass_stat = 73, - RuleRtx_pass_block = 74, RuleRtx_pass_definition = 75, RuleRtx_raygen_stat = 76, - RuleRtx_raygen_block = 77, RuleRtx_raygen_definition = 78, RuleView_declaration = 79, - RuleView_stat = 80, RuleView_block = 81, RuleView_definition = 82, RulePass_definition = 83, - RulePipeline_stat = 84, RulePipeline_block = 85, RulePipeline_definition = 86, - RuleEnum_value_declaration = 87, RuleEnum_stat = 88, RuleEnum_block = 89, - RuleEnum_definition = 90, RuleShader_type = 91, RulePso_param_id = 92, - RuleBool_type = 93 + RuleCond_term = 4, RuleCall = 5, RuleCall_arg = 6, RuleQualified_ref = 7, + RuleMember_ref = 8, RuleCond_op = 9, RuleFlag_value_holder = 10, RuleRaw_value = 11, + RuleOptions_assign = 12, RuleOption = 13, RuleOption_block = 14, RuleArray_count_id = 15, + RuleArray = 16, RuleValue_declaration = 17, RuleSlot_declaration = 18, + RuleSampler_declaration = 19, RuleDefine_declaration = 20, RuleRtv_formats_declaration = 21, + RuleBlends_declaration = 22, RulePointer = 23, RulePso_param = 24, RuleClass_no_template = 25, + RuleType_with_template = 26, RuleInherit_id = 27, RuleName_id = 28, + RuleOption_id = 29, RuleOwner_id = 30, RuleTemplate_id = 31, RuleFunction_id = 32, + RuleValue_id = 33, RuleValue_id_ignore = 34, RuleType_id = 35, RuleInsert_block = 36, + RuleShader_path = 37, RuleInherit = 38, RuleLayout_stat = 39, RuleLayout_block = 40, + RuleLayout_definition = 41, RuleTable_stat = 42, RuleFunction_definition = 43, + RuleFunction_params = 44, RuleFunction_semantic = 45, RuleTable_block = 46, + RuleTable_definition = 47, RuleRt_color_declaration = 48, RuleRt_ds_declaration = 49, + RuleRt_stat = 50, RuleRt_block = 51, RuleRt_definition = 52, RuleArray_value_holder = 53, + RuleArray_value_ids = 54, RuleRoot_sig = 55, RuleShader = 56, RuleCompute_pso_stat = 57, + RuleCompute_pso_block = 58, RuleCompute_pso_definition = 59, RuleGraphics_pso_stat = 60, + RuleGraphics_pso_block = 61, RuleGraphics_pso_definition = 62, RuleRtx_pso_stat = 63, + RuleRtx_pso_block = 64, RuleRtx_pso_definition = 65, RuleNode_param_id = 66, + RuleNode_param = 67, RuleNode_output_decl = 68, RuleNode_stat = 69, + RuleNode_block = 70, RuleNode_definition = 71, RuleWorkgraph_pso_stat = 72, + RuleWorkgraph_pso_block = 73, RuleWorkgraph_pso_definition = 74, RuleRtx_pass_stat = 75, + RuleRtx_pass_block = 76, RuleRtx_pass_definition = 77, RuleRtx_raygen_stat = 78, + RuleRtx_raygen_block = 79, RuleRtx_raygen_definition = 80, RuleView_declaration = 81, + RuleView_stat = 82, RuleView_block = 83, RuleView_definition = 84, RulePass_definition = 85, + RulePipeline_stat = 86, RulePipeline_block = 87, RulePipeline_definition = 88, + RuleEnum_value_declaration = 89, RuleEnum_stat = 90, RuleEnum_block = 91, + RuleEnum_definition = 92, RuleShader_type = 93, RulePso_param_id = 94, + RuleBool_type = 95 }; explicit PrismParser(antlr4::TokenStream *input); @@ -86,6 +86,8 @@ class PrismParser : public antlr4::Parser { class Bind_optionContext; class Cond_exprContext; class Cond_termContext; + class CallContext; + class Call_argContext; class Qualified_refContext; class Member_refContext; class Cond_opContext; @@ -281,6 +283,7 @@ class PrismParser : public antlr4::Parser { virtual size_t getRuleIndex() const override; Qualified_refContext *qualified_ref(); Function_idContext *function_id(); + CallContext *call(); Member_refContext *member_ref(); Value_idContext *value_id(); Cond_opContext *cond_op(); @@ -294,6 +297,41 @@ class PrismParser : public antlr4::Parser { Cond_termContext* cond_term(); + class CallContext : public antlr4::ParserRuleContext { + public: + CallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *ID(); + antlr4::tree::TerminalNode *OPAR(); + std::vector call_arg(); + Call_argContext* call_arg(size_t i); + antlr4::tree::TerminalNode *CPAR(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CallContext* call(); + + class Call_argContext : public antlr4::ParserRuleContext { + public: + Call_argContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector cond_term(); + Cond_termContext* cond_term(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual std::any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Call_argContext* call_arg(); + class Qualified_refContext : public antlr4::ParserRuleContext { public: Qualified_refContext(antlr4::ParserRuleContext *parent, size_t invokingState); @@ -342,6 +380,11 @@ class PrismParser : public antlr4::Parser { antlr4::tree::TerminalNode *LT(); antlr4::tree::TerminalNode *OPAR(); antlr4::tree::TerminalNode *CPAR(); + antlr4::tree::TerminalNode *PLUS(); + antlr4::tree::TerminalNode *MINUS(); + antlr4::tree::TerminalNode *POINTER(); + antlr4::tree::TerminalNode *DIV(); + antlr4::tree::TerminalNode *MOD(); virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; diff --git a/sources/Prism/.antlr/PrismVisitor.h b/sources/Prism/.antlr/PrismVisitor.h index eb688476d..54ed3375a 100644 --- a/sources/Prism/.antlr/PrismVisitor.h +++ b/sources/Prism/.antlr/PrismVisitor.h @@ -29,6 +29,10 @@ class PrismVisitor : public antlr4::tree::AbstractParseTreeVisitor { virtual std::any visitCond_term(PrismParser::Cond_termContext *context) = 0; + virtual std::any visitCall(PrismParser::CallContext *context) = 0; + + virtual std::any visitCall_arg(PrismParser::Call_argContext *context) = 0; + virtual std::any visitQualified_ref(PrismParser::Qualified_refContext *context) = 0; virtual std::any visitMember_ref(PrismParser::Member_refContext *context) = 0; diff --git a/sources/Prism/LSP.cpp b/sources/Prism/LSP.cpp index 4151e8489..f956489fa 100644 --- a/sources/Prism/LSP.cpp +++ b/sources/Prism/LSP.cpp @@ -839,6 +839,9 @@ namespace if (const Enum* e = model.enums.find(owner)) for (const auto& v : e->values) out.push_back({ v.name, owner, K_EnumMember, v.name_loc }); + if (owner == "Constants") + for (const auto& c : model.consts) + out.push_back({ c.name, "const = " + c.value_atom.expr, K_Constant, c.name_loc }); if (const Layout* l = model.layouts.find(owner)) { for (const auto& s : l->slots) @@ -1270,6 +1273,7 @@ namespace const std::string* text = doc_text(params["textDocument"]["uri"].text); if (!text) return R"({"data":[]})"; + const std::string path = uri_to_path(params["textDocument"]["uri"].text); std::map types; for (const auto& d : declarations()) @@ -1333,6 +1337,12 @@ namespace continue; } + // No token inside [Always]/[RecreateFlags]/[Format]: the grammar + // gives those values the #define colour, and a token here would + // paint over it. + if (auto option = option_value_at(t, b); option && option_enum(*option, path)) + continue; + if (auto it = types.find(id); it != types.end()) emit(b, id.size(), it->second); } @@ -1441,8 +1451,24 @@ namespace } else if (auto option = option_value_at(*text, offset)) { - for (const auto& v : values_used_for(*option)) - items.push_back({ v, "used for [" + *option + "]", K_Constant, {} }); + const CppEnum* e = option_enum(*option, uri_to_path(uri)); + if (e && !e->names.empty()) + for (const auto& v : e->names) + items.push_back({ v, e->cpp_name, K_Constant, {} }); + else + for (const auto& v : values_used_for(*option)) + items.push_back({ v, "used for [" + *option + "]", K_Constant, {} }); + + // These are expressions built from size functions, Owner::field + // reads and Constants::X rather than reused values. + if (*option == "Size" || *option == "ArrayCount" || *option == "MipCount") + { + for (const auto& [name, cpp] : size_functions()) + items.push_back({ name, "size function -> " + cpp, K_Method, {} }); + items.push_back({ "Constants", "Prism consts", K_Module, {} }); + for (const auto& table : model.tables) + items.push_back({ table.name, "struct", K_Struct, table.name_loc }); + } } else { diff --git a/sources/Prism/Main.cpp b/sources/Prism/Main.cpp index 8b250d291..5599bcbcb 100644 --- a/sources/Prism/Main.cpp +++ b/sources/Prism/Main.cpp @@ -168,12 +168,19 @@ static void render_expr(const Parsed& parsed, have_expr& e) auto append = [&](const std::string& s, bool tight_after) { - if (!suppress_space && !out.empty() && s != ")") + if (!suppress_space && !out.empty() && s != ")" && s != ",") out += ' '; out += s; suppress_space = tight_after; }; + // tiles(...) -> Math::DivideByMultiple(...) etc.; anything else unchanged. + auto cpp_function = [](const std::string& name) + { + auto it = size_functions().find(name); + return it != size_functions().end() ? it->second : name; + }; + for (const auto& t : e.terms) { switch (t.kind) @@ -208,12 +215,19 @@ static void render_expr(const Parsed& parsed, have_expr& e) if (fn.rfind("exists(", 0) == 0) append("builder." + fn.substr(0, 7) + "data." + fn.substr(7), false); else - append(fn, false); + { + size_t paren = fn.find('('); + append(cpp_function(fn.substr(0, paren)) + fn.substr(paren), false); + } break; } + case ExprTerm::Call: + append(cpp_function(t.text) + "(", true); + break; + case ExprTerm::Op: - // '!' and '(' bind tight to what follows; ')' to what precedes. + // '!' and '(' bind tight to what follows; ')' and ',' to what precedes. append(t.text, t.text == "!" || t.text == "("); break; @@ -253,6 +267,83 @@ static void render_condition_options(Parsed& parsed) } } +// Whether a [Size] is one number (N -> an N x N texture) or a 2D vector. Vectors +// come from ivec2(...) and from vector-typed struct fields (int2 frame_size); +// tiles() keeps its argument's shape and area() collapses it back to a number. +static bool size_is_scalar(const Parsed& parsed, const have_expr& e) +{ + if (e.is_raw) + return false; + + auto vector_field = [&](const std::string& owner, const std::string& field) + { + std::function find = [&](const Table* t) -> bool + { + if (!t) return false; + for (const auto& v : t->values) + if (v.name == field) + return !v.class_no_template.empty() && std::isdigit((unsigned char)v.class_no_template.back()); + for (const auto& p : t->parent) + if (find(parsed.tables.find(p))) return true; + return false; + }; + return find(parsed.tables.find(owner)); + }; + + // Open calls and parentheses; a vector under an open area() doesn't count. + std::vector open; + auto in_area = [&] { return std::find(open.begin(), open.end(), "area") != open.end(); }; + + for (const auto& t : e.terms) + { + bool vector = false; + if (t.kind == ExprTerm::Qualified) + vector = vector_field(t.owner, t.text); + else if (t.kind == ExprTerm::Function) + vector = t.text.starts_with("ivec2("); + else if (t.kind == ExprTerm::Call) + { + vector = t.text == "ivec2"; + open.push_back(t.text); + } + else if (t.kind == ExprTerm::Op && t.text == "(") + open.push_back("("); + else if (t.kind == ExprTerm::Op && t.text == ")" && !open.empty()) + open.pop_back(); + + if (vector && !in_area()) + return false; + } + return true; +} + +// [Size], [ArrayCount] and [MipCount] are rendered like conditions, so a Table:: +// read lands in field_refs and Constants::X keeps its prefix (the listeners +// store it as owner_name + expr). A single literal or Owner::field renders to +// exactly what resolve_size_expr used to build from those. The leaf listeners +// also stamp owner_name and is_literal from whichever leaf came last; cleared +// here so templates and resolve_size_expr take the rendered expression as-is. +static void render_size_options(Parsed& parsed) +{ + auto do_params = [&](std::list& params) + { + for (auto& param : params) + for (auto& opt : param.options) + if ((opt.name == "Size" || opt.name == "ArrayCount" || opt.name == "MipCount") + && !opt.value_atom.is_raw && !opt.value_atom.terms.empty()) + { + render_expr(parsed, opt.value_atom); + opt.value_atom.is_literal = false; + opt.value_atom.owner_name.clear(); + } + }; + + for (auto& pass : parsed.passes) + do_params(pass.params); + for (auto& view : parsed.views) + do_params(view.params); +} + // RaytraceRaygen/RaytracePass ::ID must equal the item's position in its // RaytracePSO's gens/passes list -- RTX.ixx static_asserts it against the @@ -337,6 +428,13 @@ int main(int argc, char** argv) // Turns parsed condition terms into the C++ the templates paste, and // collects each condition's Table:: field dependencies on the way. render_condition_options(parsed); + render_size_options(parsed); + // `const A = Constants::B * 2;`: the listeners leave only the last leaf in + // expr, so a multi-term value has to be rendered before constants.jinja + // pastes it. + for (auto& c : parsed.consts) + if (!c.value_atom.is_raw && !c.value_atom.terms.empty()) + render_expr(parsed, c.value_atom); rapidjson::Document parsed_doc = make_map(parsed); @@ -762,6 +860,16 @@ int main(int argc, char** argv) // costs nothing at this level: the key hashes every field of // an included struct regardless of who reads it, so pulling // ViewportContext in covers the opaque expressions as well. + // A [Size] expression names its contexts in field_refs + // (render_size_options), possibly several. + else if (!opt.value_atom.field_refs.empty()) + { + for (const auto& r : opt.value_atom.field_refs) + { + owners.insert(r.owner); + desc_owners.insert(r.owner); + } + } else if (!opt.value_atom.owner_name.empty()) { owners.insert(opt.value_atom.owner_name); @@ -1069,6 +1177,19 @@ int main(int argc, char** argv) ArgInfo{"pass_name"}, ArgInfo{"field_name"} )); + global.AddGlobal("size_is_scalar", jinja2::MakeCallable( + [&](const std::string& pass_name, const std::string& field_name) -> bool + { + if (Pass* pass = parsed.passes.find(pass_name)) + for (const auto& p : pass->params) + if (p.name == field_name) + if (const option* size = p.find_option("Size")) + return size_is_scalar(parsed, size->value_atom); + return false; + }, + ArgInfo{"pass_name"}, ArgInfo{"field_name"} + )); + global.AddGlobal("get_pipeline_resources", jinja2::MakeCallable( [&](const std::string& pipeline_name) -> ValuesList { @@ -1518,6 +1639,11 @@ int main(int argc, char** argv) my_stream(cpp_path_render, "enums.h") << cpp_templates.generate(L"pass_enums"); my_stream(cpp_path_render, "passes.ixx") << cpp_templates.generate(L"passes"); + + // shaders_path itself is not swept: it holds hand-written shaders, and + // its one generated file (enums.h) is always written. + for (auto& f : remove_stale_outputs({ cpp_path, cpp_path_render, hlsl_path })) + std::cout << "removed stale " << f << std::endl; } catch (std::exception& e) { diff --git a/sources/Prism/Parsed.cpp b/sources/Prism/Parsed.cpp index 3a72b3e77..ac1de9480 100644 --- a/sources/Prism/Parsed.cpp +++ b/sources/Prism/Parsed.cpp @@ -3,10 +3,63 @@ import windows; #include "Parsed.h" +static std::set& written_paths() +{ + static std::set paths; + return paths; +} + +// Lowercased: writing Foo.h over an existing foo.h keeps the on-disk casing, +// and a directory walk reports that casing, so a case-sensitive key would +// delete a file this run just wrote. +static std::wstring normalized(const std::filesystem::path& p) +{ + auto s = std::filesystem::absolute(p).lexically_normal().wstring(); + for (auto& c : s) + if (c >= L'A' && c <= L'Z') c += L'a' - L'A'; + return s; +} + my_stream::my_stream(std::string dir, std::string filename) { path = dir + "/" + filename; std::filesystem::create_directories(dir); + written_paths().insert(normalized(path)); +} + +static bool has_generated_banner(const std::filesystem::path& p) +{ + std::ifstream f(p, std::ios::binary); + std::string head(512, '\0'); + f.read(head.data(), head.size()); + head.resize(f.gcount()); + return head.find("THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT") != std::string::npos; +} + +std::vector remove_stale_outputs(const std::vector& roots) +{ + std::vector removed; + for (auto& root : roots) + { + if (!std::filesystem::is_directory(root)) continue; + + std::vector stale; + for (auto& entry : std::filesystem::recursive_directory_iterator(root)) + { + if (!entry.is_regular_file()) continue; + if (written_paths().contains(normalized(entry.path()))) continue; + if (!has_generated_banner(entry.path())) continue; + stale.push_back(entry.path()); + } + + for (auto& p : stale) + { + std::filesystem::remove(p); + removed.push_back(p.lexically_normal().generic_string()); + } + } + std::sort(removed.begin(), removed.end()); + return removed; } // Canonicalizes to CRLF explicitly (matching every generated file already diff --git a/sources/Prism/Parsed.h b/sources/Prism/Parsed.h index e5eb7e75a..b5d734de6 100644 --- a/sources/Prism/Parsed.h +++ b/sources/Prism/Parsed.h @@ -22,6 +22,11 @@ struct my_stream std::stringstream& operator<<(const T& data); }; +// Deletes generated files under `roots` that this run didn't write. Only files +// carrying the DO-NOT-EDIT banner are touched: hand-written files live in these +// directories too (FrameGraph/autogen/PassNodeBase.h). Returns the removed paths. +std::vector remove_stale_outputs(const std::vector& roots); + template std::stringstream& my_stream::operator<<(const T& data) { @@ -314,7 +319,9 @@ struct ExprTerm : public virtual parsed_type Qualified, // Owner::name -- context field OR enum value (resolved later) Member, // owner.name -- pass-local state, e.g. data.pass_index Function, // exists(X) and friends, captured whole - Op // && || ! == != >= <= > < ( ) + Op, // && || ! == != >= <= > < ( ) + - * / % and a call's `,` + Call // name( of a call with expression arguments; its argument + // terms, `,` and `)` follow as ordinary terms }; int kind = Plain; diff --git a/sources/Prism/Parsing.cpp b/sources/Prism/Parsing.cpp index 4f1cc5a15..9fcbb53c3 100644 --- a/sources/Prism/Parsing.cpp +++ b/sources/Prism/Parsing.cpp @@ -498,6 +498,13 @@ class TreeShapeListener : public PrismBaseListener if (term.text.rfind("exists(", 0) == 0) term.text_loc = loc_of(ctx, 7); } + else if (auto* c = ctx->call()) + { + // The argument terms follow via their own enterCond_term; the + // separators and closing paren come from the two listeners below. + term.kind = ExprTerm::Call; + term.text = c->ID()->getText(); + } else if (ctx->cond_op()) { term.kind = ExprTerm::Op; @@ -510,6 +517,24 @@ class TreeShapeListener : public PrismBaseListener } } + void enterCall_arg(PrismParser::Call_argContext* ctx) override + { + auto* call = static_cast(ctx->parent); + if (call->call_arg(0) != ctx) + { + auto& term = get_elem().terms.emplace_back(); + term.kind = ExprTerm::Op; + term.text = ","; + } + } + + void exitCall(PrismParser::CallContext* ctx) override + { + auto& term = get_elem().terms.emplace_back(); + term.kind = ExprTerm::Op; + term.text = ")"; + } + void enterPso_param_id(PrismParser::Pso_param_idContext* ctx) override { auto& elem = get_elem(); diff --git a/sources/Prism/Prism.g4 b/sources/Prism/Prism.g4 index 87f775e7a..eba8647a8 100644 --- a/sources/Prism/Prism.g4 +++ b/sources/Prism/Prism.g4 @@ -70,11 +70,20 @@ cond_expr : cond_term+ ; cond_term : qualified_ref | function_id + | call | member_ref | value_id | cond_op ; +// A call whose arguments are themselves expressions: +// `area(tiles(ViewportContext::frame_size, 16))`. The arguments are bounded by +// the call's own parentheses, which keeps their commas from being read as the +// commas between options. function_id stays ahead of it, so `exists(X)` and +// other plain-argument calls parse exactly as before. +call : ID OPAR call_arg (',' call_arg)* CPAR ; +call_arg : cond_term+ ; + // Owner::name -- either a Table:: context field or an enum value. Which one is // NOT decidable here (both are `ID::ID`); codegen resolves it by looking the // owner up in parsed.tables vs parsed.enums, and only a tables hit becomes a @@ -90,7 +99,8 @@ member_ref : name_id DOT name_id ; // function_id (e.g. `exists(ShadowMask)`) is matched ahead of value_id because // value_id's own ID alternative would otherwise win and leave the parentheses // to be eaten as cond_ops. -cond_op : AND | OR | NOT | EQ | NEQ | GTEQ | LTEQ | GT | LT | OPAR | CPAR ; +// Arithmetic is for [Size] expressions (POINTER is the lexer's '*'). +cond_op : AND | OR | NOT | EQ | NEQ | GTEQ | LTEQ | GT | LT | OPAR | CPAR | PLUS | MINUS | POINTER | DIV | MOD ; flag_value_holder: value_id; diff --git a/sources/Prism/REFACTOR_TODO.md b/sources/Prism/REFACTOR_TODO.md index 288a7d44a..2eb4957b7 100644 --- a/sources/Prism/REFACTOR_TODO.md +++ b/sources/Prism/REFACTOR_TODO.md @@ -19,13 +19,13 @@ mistake and the message about it. ## Status (2026-09-23) -Done: items 1, 2, 4, 10, 9's private-import bug, and most of 3 plus 8's merge +Done: items 1, 2, 4, 6, 7, 9, 10, and most of 3 plus 8's merge collisions. A `.prism` error now prints `file(line,col): error: ...`, exits 1, and writes nothing. Verified by regenerating with a byte-identical `autogen/` diff, then breaking a `.prism` on purpose in each way below and confirming each one is reported. -Open: 3's remaining checks, 5, 6, 7, most of 8, 9's dropped-field bug. +Open: 3's remaining checks, 5, most of 8. Also since then: HLSL functions are struct members (`function_definition`, lexer token `FUNC_BODY`), taking `[options]`. `[HLSL]` is the default, so @@ -125,10 +125,14 @@ error messages that say *what* is wrong but not *where*, which in a 14-file - that every `Pipeline` entry names an existing `PassNode` - that every `RaytraceRaygen`/`RaytracePass` has a `[Bind]` naming a `RaytracePSO` - `#` lines in `%{ }%` that aren't preprocessor directives - -Still open: values of `[Always]`/`[Format]`/`[RecreateFlags]` are not checked -against `ResourceFlags`/formats (they fail at C++ compile time instead, which -is loud). Also, `KNOWN_CPP_SCOPES` is empty, because no current condition +- that `[Always]`/`[RecreateFlags]` values are `FrameGraph::ResourceFlags` names + and `[Format]` a single `HAL::Format` name. `option_enum` (`Validate.cpp`) + reads both enums from the engine source (`FrameGraph.Base.ixx`, + `HAL.Format.ixx`), so there is no copy to drift; if an enum can't be found, + that is itself an error rather than a silently skipped check. LSP completion + offers the same names. + +Still open: `KNOWN_CPP_SCOPES` is empty, because no current condition names a non-Prism scope. Add to it rather than weakening the check. Three options are accepted but **read by nothing**, and are marked `unread` @@ -241,7 +245,37 @@ Not breaking anything today; all of it is latent. --- -## 6. `[Size]` expressions are still opaque +## 6. `[Size]` expressions are still opaque — DONE + +`[Size]` is now a parsed expression. The grammar gained arithmetic (`+ - * / +%`) in `cond_op` and a `call` rule whose arguments are expressions. Size +functions (`tiles`, `area`; `size_functions()` in Validate.cpp) render to +`Math::DivideByMultiple` / `Math::Area`, which gained vector overloads in +Core/Math/Types/Vectors.ixx. `[Counted]` replaces the `, true` backtick +suffix. `render_size_options` renders a multi-term size and records its +field_refs, which now feed `desc_owners`. All 21 backtick sizes that read +`frame_size` were migrated. Each old/new pair was checked numerically +equivalent for every width and height from 1 to 4096, and the generated diff +touched only those 34 lines. Four `frame_size / 8` sizes (Hi-Z pyramids) +keep their floor division as written. + +Follow-up: `[ArrayCount]` and `[MipCount]` are expressions too, and every +`[Size]` is rendered as one, single terms included. A single number, literal +or const, is a square texture: `size_is_scalar` (Main.cpp) replaces the old +`is_literal` test in `pass.jinja`. `ivec2(w, h)` is a size function for +non-square sizes. The remaining 22 backtick values, all built from +`Constants::`, were migrated, so no `[Size]`/`[ArrayCount]`/`[MipCount]` uses +a backtick any more. Generated output was byte-identical before the +migration. After it, the only changes are dropped `(size_t)` casts and +`ivec3(ivec2(N, N), 0)` becoming `ivec3(N, N, 0)`, and RenderSystem builds. + +`const` values are expressions too, rendered in Main.cpp before constants.jinja +pastes them; `check_const_values` (Validate.cpp) allows only consts declared +earlier. Six backtick consts were migrated with byte-identical output. Two keep +backticks: `WG_TileSection` (sizeof, `u` suffixes) and `VSM_PyramidMipCount` +(a lambda). + +Original notes: Conditions are fully structured, so `context_deps.h` can prove the field dependencies of every pass's *enable* decision (`deps_complete` is currently @@ -271,8 +305,20 @@ output is a real difference in meaning rather than whitespace. --- -## 7. Stale output is never cleaned +## 7. Stale output is never cleaned — DONE + +`my_stream` records every path it writes. After a successful run, +`remove_stale_outputs` (`Parsed.cpp`) deletes the files under the three +`autogen/` roots that weren't written, but only those carrying the DO-NOT-EDIT +banner, and prints each one as `removed stale `. `workdir/shaders` +itself is not swept. A failed run never reaches the sweep. The first run +removed 9 orphans (old `GraphInput` slot files from before it became +`[nobind]`, and `CullingArgsReset`, `DeviceCapabilities`, +`VSM*InitDispatch`). Four old orphans from before the banner existed stay, +because they don't carry it: `DenoiserShadow_Fileter.h` (two copies), +`layout/None.h` and `tables/PSSMGlobal.h` under `workdir/shaders/autogen`. +Original note: The generator writes files but never removes ones it no longer produces. Deleting a `PassNode` leaves its `autogen/pass/.h` behind forever; seven such orphans accumulated (`CopyPrev.h`, `GBuffer.h`, `RTXPass.h`, @@ -331,12 +377,12 @@ known-generated directories, and only files carrying the DO-NOT-EDIT banner. --- -## 9. Confirmed template bugs producing silently-wrong output on valid input +## 9. Confirmed template bugs producing silently-wrong output on valid input — DONE Distinct from item 3's "no validation pass" (which is about *rejecting bad `.prism` input*): these are cases where the `.prism` input is completely valid and -the generator still emits incorrect C++, every time, unconditionally. Both -were hit — repeatedly — implementing the DDGI probe-volume feature. +the generator still emits incorrect C++, every time, unconditionally. Hit +repeatedly while implementing the DDGI probe-volume feature. - **FIXED** in `templates/cpp/autogen.jinja`, which now emits `export import`. Confirmed on 2026-09-23 when a regen from current source reproduced the @@ -358,30 +404,11 @@ were hit — repeatedly — implementing the DDGI probe-volume feature. template's unconditional output. Needs a mechanical fix in whichever jinja template emits this block (adds `export ` to each `import :Autogen.(PSO|RT| RTX).*` line, and a newline before the first one). -- **A nested (non-`[Bind]`) struct whose only field is a resource type - (`StructuredBuffer`/`RWStructuredBuffer`) is silently dropped from - the generated struct entirely** — no error, no warning, the field and its - accessor simply don't exist in the output. Reproduced with: - ``` - struct DDGIProbes - { - RWStructuredBuffer probes; - %{ /* helper functions */ }% - } - ``` - Adding one plain scalar field *before* the resource field makes it appear - correctly — smells like an off-by-one in whatever jinja loop walks a - struct's field list (possibly the same family as the list-accumulation - bugs [[project_jinja2cpp_issues]] already tracks; worth checking if this is - one of the same six). Confirmed by diffing generated output with and - without the leading field, on an otherwise-identical `.prism` struct. - -Both were found by trial and error during feature work, not by inspecting the + +It was found by trial and error during feature work, not by inspecting the templates — a snapshot-based template test suite (generate a small fixture -`.prism` covering "nested struct, resource-only field" and "PSO import block", -assert exact output) would have caught both at the time the templates were -last touched, rather than at the time some unrelated feature happened to -exercise the exact shape that triggers them. +`.prism` covering the PSO import block, assert exact output) would have caught +it at the time the templates were last touched. --- @@ -431,11 +458,9 @@ named, the same shape item 3 already proposes for name collisions. ## Suggested order -Items 1, 2, 4, 10 and 9's import bug are done, and most of 3. What remains: +Items 1, 2, 4, 6, 7, 9 and 10 are done, and most of 3. What remains: -1. **Item 9's dropped-field bug**: find the root cause in the template, and - add the fixture-based snapshot test described there. -2. **Item 7** (clean stale output), together with 8's "N added / M removed / - K modified" summary. Both need the same list of paths written in a run. -3. **Resolve the three `unread` options** listed in item 3. -4. Items 5, 6 and the rest of 8 as they become relevant. +1. 8's "N added / M removed / K modified" summary for command-line runs. The + written-path set from item 7 is already there to build it from. +2. **Resolve the three `unread` options** listed in item 3. +3. Item 5 and the rest of 8 as they become relevant. diff --git a/sources/Prism/Validate.cpp b/sources/Prism/Validate.cpp index c72f02168..4abfad2c9 100644 --- a/sources/Prism/Validate.cpp +++ b/sources/Prism/Validate.cpp @@ -16,7 +16,8 @@ namespace const std::set PSO_OPTIONS = { "Template", "ExcludeVulkan" }; const std::set RESOURCE_FIELD_OPTIONS = { "Always", "ArrayCount", "Format", "MipCount", "Optional", "PrevFor", "Recreate", "RecreateFlags", - "Size", "SkipEnablement", "Write" + "Size", "SkipEnablement", "Write", + "Counted", // buffer gets a counter (StructuredDesc::counted) }; const std::map> KNOWN_OPTIONS = { @@ -254,6 +255,159 @@ namespace } } + // A [Size]/[ArrayCount]/[MipCount] expression: every Owner::name must resolve + // (a struct field, an enum value or a const) and every call must be a known + // size function. + void check_size_expression(const Parsed& parsed, const option& opt, const std::string& where) + { + const std::string& o = opt.name; + + std::vector functions; + for (const auto& [name, cpp] : size_functions()) + functions.push_back(name); + + auto check_function = [&](const std::string& name, const SourceLocation& loc) + { + if (!size_functions().count(name)) + unknown_name(loc, std::format("[{}] on '{}': unknown function '{}'", o, where, name), name, functions); + }; + + for (const auto& t : opt.value_atom.terms) + { + switch (t.kind) + { + case ExprTerm::Qualified: + if (parsed.tables.find(t.owner)) + { + if (!find_table_field(parsed, t.owner, t.text)) + { + std::vector fields; + table_field_names(parsed, t.owner, fields); + unknown_name(t.text_loc, std::format("[{}] on '{}': struct '{}' has no field '{}'", o, where, t.owner, t.text), + t.text, fields); + } + } + else if (t.owner == "Constants") + { + if (!parsed.consts.find(t.text)) + { + std::vector consts; + for (const auto& c : parsed.consts) + consts.push_back(c.name); + unknown_name(t.text_loc, std::format("[{}] on '{}': no const '{}'", o, where, t.text), t.text, consts); + } + } + else if (!parsed.enums.find(t.owner)) + { + std::vector owners{ "Constants" }; + for (const auto& table : parsed.tables) + owners.push_back(table.name); + unknown_name(t.owner_loc, std::format("[{}] on '{}': '{}::{}' names no struct, enum or Constants", + o, where, t.owner, t.text), t.owner, owners); + } + break; + + case ExprTerm::Call: + check_function(t.text, t.text_loc); + break; + + case ExprTerm::Function: + check_function(t.text.substr(0, t.text.find('(')), t.text_loc); + break; + + case ExprTerm::Member: + diagnostics().error(t.owner_loc, std::format("[{}] on '{}': '{}.{}' -- a size can't depend on pass state", + o, where, t.owner, t.text)); + break; + + default: + break; + } + } + } + + // The generator pastes these after "FrameGraph::ResourceFlags::" or + // "HAL::Format::", so a bad name is otherwise a C++ compile error far from + // the .prism line that caused it. + void check_enum_option(const option& opt, const std::string& where) + { + const auto& atom = opt.value_atom; + const CppEnum* e = option_enum(opt.name, opt.loc.file); + if (!e || atom.is_raw) + return; + + if (e->names.empty()) + { + static std::set reported; + if (reported.insert(e->source).second) + diagnostics().error(opt, std::format("[{}] values can't be checked: no {} enum found in {}", + opt.name, e->cpp_name, std::filesystem::path(e->source).make_preferred().string())); + return; + } + + auto check = [&](const std::string& value, const SourceLocation& loc) + { + if (std::find(e->names.begin(), e->names.end(), value) == e->names.end()) + unknown_name(loc, std::format("[{}] on '{}': '{}' is not a {} value", opt.name, where, value, e->cpp_name), + value, e->names); + }; + + if (!atom.values.empty()) + { + if (opt.name == "Format") + diagnostics().error(opt, std::format("[Format] on '{}' takes a single {} value", where, e->cpp_name)); + for (const auto& v : atom.values) + check(v.expr, v.loc); + } + else if (!atom.owner_name.empty() || atom.terms.size() > 1) + diagnostics().error(opt, std::format("[{}] on '{}' takes a bare {} name{}", opt.name, where, e->cpp_name, + opt.name == "Format" ? "" : ", or several joined with |")); + else + check(atom.expr, atom.terms.empty() ? opt.loc : atom.terms.front().text_loc); + } + + // `const A = Constants::B * 2;`. A const is a constexpr in Constants.ixx, so it + // can read only consts declared before it (C++ declaration order) and no + // runtime state at all. + void check_const_values(const Parsed& parsed) + { + std::vector earlier; + for (const auto& c : parsed.consts) + { + for (const auto& t : c.value_atom.is_raw ? std::list{} : c.value_atom.terms) + { + if (t.kind == ExprTerm::Qualified) + { + if (t.owner != "Constants") + unknown_name(t.owner_loc, std::format("const '{}': '{}::{}' -- a const can only use Constants::", + c.name, t.owner, t.text), t.owner, { "Constants" }); + else if (std::find(earlier.begin(), earlier.end(), t.text) == earlier.end()) + { + if (parsed.consts.find(t.text)) + diagnostics().error(t.text_loc, std::format("const '{}': Constants::{} is declared after it", c.name, t.text)); + else + unknown_name(t.text_loc, std::format("const '{}': no const '{}'", c.name, t.text), t.text, earlier); + } + } + else if (t.kind == ExprTerm::Member) + diagnostics().error(t.owner_loc, std::format("const '{}': '{}.{}' -- a const can't read pass state", + c.name, t.owner, t.text)); + else if (t.kind == ExprTerm::Call || t.kind == ExprTerm::Function) + { + std::string name = t.text.substr(0, t.text.find('(')); + if (!size_functions().count(name)) + { + std::vector functions; + for (const auto& [f, cpp] : size_functions()) + functions.push_back(f); + unknown_name(t.text_loc, std::format("const '{}': unknown function '{}'", c.name, name), name, functions); + } + } + } + earlier.push_back(c.name); + } + } + void check_view_fields(const Parsed& parsed, const View& owner) { for (const auto& opt : owner.options) @@ -263,20 +417,16 @@ namespace for (const auto& p : owner.params) { for (const auto& opt : p.options) + { if (CONDITION_OPTIONS.count(opt.name)) check_condition(parsed, opt, owner); - - // resolve_size_expr turns Owner::field into get_context().field - // unconditionally, so the owner has to be a Prism struct. - if (const option* size = p.find_option("Size")) - { - const auto& atom = size->value_atom; - if (!atom.is_raw && !atom.is_literal && !atom.owner_name.empty() - && !find_table_field(parsed, atom.owner_name, atom.expr)) - diagnostics().error(*size, std::format("[Size] on '{}.{}': '{}::{}' is not a field of a Prism struct", - owner.name, p.name, atom.owner_name, atom.expr)); + check_enum_option(opt, owner.name + "." + p.name); } + for (const char* name : { "Size", "ArrayCount", "MipCount" }) + if (const option* o = p.find_option(name); o && !o->value_atom.is_raw) + check_size_expression(parsed, *o, owner.name + "." + p.name); + if (const View* view = parsed.views.find(p.class_no_template)) { if (const option* w = p.find_option("Write")) @@ -393,15 +543,82 @@ namespace } } -std::filesystem::path shaders_root(const std::string& sig_file) +static std::filesystem::path checkout_root(const std::string& sig_file) { std::error_code ec; for (auto p = std::filesystem::absolute(sig_file, ec).parent_path(); !p.empty() && p != p.root_path(); p = p.parent_path()) if (std::filesystem::is_directory(p / "workdir" / "shaders", ec)) - return p / "workdir" / "shaders"; + return p; return {}; } +std::filesystem::path shaders_root(const std::string& sig_file) +{ + auto root = checkout_root(sig_file); + return root.empty() ? root : root / "workdir" / "shaders"; +} + +// The enumerator names between the braces following `header`. Enough for the +// plain enums this reads: no nested braces, comments allowed, `= value` ignored. +static std::vector read_cpp_enum(const std::filesystem::path& file, const std::string& header) +{ + std::ifstream f(file, std::ios::binary); + std::string text(std::istreambuf_iterator{f}, {}); + + size_t at = text.find(header); + if (at == std::string::npos) return {}; + size_t open = text.find('{', at); + size_t close = open == std::string::npos ? open : text.find('}', open); + if (close == std::string::npos) return {}; + std::string body = text.substr(open + 1, close - open - 1); + + std::string code; + for (size_t i = 0; i < body.size(); ++i) + { + if (body.compare(i, 2, "//") == 0) + i = std::min(body.find('\n', i), body.size()) - 1; + else if (body.compare(i, 2, "/*") == 0) + i = std::min(body.find("*/", i), body.size() - 2) + 1; + else + code += body[i]; + } + + std::vector names; + std::stringstream entries(code); + for (std::string entry; std::getline(entries, entry, ',');) + { + auto is_ident = [](char c) { return std::isalnum((unsigned char)c) || c == '_'; }; + auto begin = std::find_if(entry.begin(), entry.end(), is_ident); + auto end = std::find_if_not(begin, entry.end(), is_ident); + if (begin != end) + names.emplace_back(begin, end); + } + return names; +} + +const CppEnum* option_enum(const std::string& option_name, const std::string& sig_file) +{ + struct Source { const char* cpp_name; const char* file; const char* header; }; + static const Source flags = { "FrameGraph::ResourceFlags", "sources/RenderSystem/FrameGraph/FrameGraph.Base.ixx", "enum class ResourceFlags" }; + static const Source format = { "HAL::Format", "sources/HAL/HAL.Format.ixx", "enum Formats" }; + + const Source* src = option_name == "Always" || option_name == "RecreateFlags" ? &flags + : option_name == "Format" ? &format : nullptr; + if (!src) return nullptr; + + // Keyed on the write time too: the language server lives for a whole VS + // session, during which the enum can gain a value. + struct Entry { std::filesystem::file_time_type time; CppEnum e; }; + static std::map cache; + auto path = checkout_root(sig_file) / src->file; + std::error_code ec; + auto time = std::filesystem::last_write_time(path, ec); + auto& entry = cache[path]; + if (entry.e.cpp_name.empty() || entry.time != time) + entry = { time, CppEnum{ src->cpp_name, path, read_cpp_enum(path, src->header) } }; + return &entry.e; +} + const std::set& known_options(const std::string& kind) { static const std::set none; @@ -409,6 +626,16 @@ const std::set& known_options(const std::string& kind) return it != KNOWN_OPTIONS.end() ? it->second : none; } +const std::map& size_functions() +{ + static const std::map functions = { + { "tiles", "Math::DivideByMultiple" }, // tiles(v, n): n-sized tiles covering v, per component, rounded up + { "area", "Math::Area" }, // area(v): element count of a grid of size v + { "ivec2", "ivec2" }, // ivec2(w, h): a non-square 2D size + }; + return functions; +} + std::vector option_kinds(const std::string& option_name) { std::vector out; @@ -434,6 +661,7 @@ void validate(Parsed& parsed) check_duplicates(parsed.pipelines, "Pipeline"); check_duplicates(parsed.enums, "enum"); check_duplicates(parsed.consts, "const"); + check_const_values(parsed); for (const auto& table : parsed.tables) { diff --git a/sources/Prism/Validate.h b/sources/Prism/Validate.h index e64daf072..e0a22a9de 100644 --- a/sources/Prism/Validate.h +++ b/sources/Prism/Validate.h @@ -12,5 +12,22 @@ const std::set& known_options(const std::string& kind); // Every declaration kind that accepts `option_name`. std::vector option_kinds(const std::string& option_name); +// Functions a [Size] expression may call -> the C++ each renders to. Kept in one +// place so the generator and the validator can't disagree about the set. +const std::map& size_functions(); + // workdir/shaders of the checkout a .prism file belongs to; empty if not found. std::filesystem::path shaders_root(const std::string& sig_file); + +// A C++ enum whose names an option's value must be: [Always]/[RecreateFlags] +// take FrameGraph::ResourceFlags, [Format] takes HAL::Format. The names are read +// from the engine source of the checkout, so there is no copy to keep in sync. +struct CppEnum +{ + std::string cpp_name; + std::filesystem::path source; + std::vector names; // empty if the source couldn't be read or parsed +}; + +// nullptr when `option_name` isn't enum-valued. +const CppEnum* option_enum(const std::string& option_name, const std::string& sig_file); diff --git a/sources/Prism/defs/AssetRenderer.prism b/sources/Prism/defs/AssetRenderer.prism index 1196d42fd..9e23b2ffa 100644 --- a/sources/Prism/defs/AssetRenderer.prism +++ b/sources/Prism/defs/AssetRenderer.prism @@ -33,9 +33,9 @@ PassNode AssetGBuffer # Static: occlusion pass 1 tests against LAST frame's HiZ (see SceneSystem). # MipCount=0: full auto mip chain (a Hi-Z pyramid), matching the original # manual create()'s omitted 4th Desc field. - [Always = DepthStencil | Static] [Size = `builder.graph->get_context().frame_size / 8`] [Format = R32_TYPELESS] [MipCount = 0] + [Always = DepthStencil | Static] [Size = ViewportContext::frame_size / 8] [Format = R32_TYPELESS] [MipCount = 0] Texture GBuffer_HiZ; - [Always = UnorderedAccess] [Size = `builder.graph->get_context().frame_size / 8`] [Format = R32_FLOAT] [MipCount = 0] + [Always = UnorderedAccess] [Size = ViewportContext::frame_size / 8] [Format = R32_FLOAT] [MipCount = 0] Texture GBuffer_HiZ_UAV; [Always = Read] StructuredBuffer scene; } diff --git a/sources/Prism/defs/ddgi.prism b/sources/Prism/defs/ddgi.prism index 33392a5b1..e40866b4e 100644 --- a/sources/Prism/defs/ddgi.prism +++ b/sources/Prism/defs/ddgi.prism @@ -80,7 +80,7 @@ enum DDGIOcclusionMode const DDGI_ProbeCountX = 64; const DDGI_ProbeCountY = 32; const DDGI_ProbeCountZ = 64; -const DDGI_ProbeCount = `Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeCountY * Constants::DDGI_ProbeCountZ`; +const DDGI_ProbeCount = Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeCountY * Constants::DDGI_ProbeCountZ; # Octahedral atlas texel budget per probe. v1 uses the same texel size for # radiance/irradiance/visibility for scaffold simplicity -- AC Shadows uses @@ -98,9 +98,9 @@ const DDGI_ProbeTexelSize = 8; # instead keeps both the plane (512x512) and the array count (32*5=160) # comfortably within limits. See DDGIProbes' ddgi_atlas_origin()/ # ddgi_atlas_array_slice() helpers below for the addressing this implies. -const DDGI_AtlasWidth = `Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeTexelSize`; -const DDGI_AtlasHeight = `Constants::DDGI_ProbeCountZ * Constants::DDGI_ProbeTexelSize`; -const DDGI_AtlasArraySlices = `Constants::DDGI_ProbeCountY * Constants::DDGI_CascadeCount`; +const DDGI_AtlasWidth = Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeTexelSize; +const DDGI_AtlasHeight = Constants::DDGI_ProbeCountZ * Constants::DDGI_ProbeTexelSize; +const DDGI_AtlasArraySlices = Constants::DDGI_ProbeCountY * Constants::DDGI_CascadeCount; # Fixed ray budget PER PROBE, decoupled from DDGI_ProbeTexelSize -- v1 traced # exactly one ray per eventual octahedral output texel (64 = 8x8), which @@ -126,7 +126,7 @@ const DDGI_ProbeRayCount = 32; # upper bound used to size nothing in particular yet -- kept for parity with # vsm.prism's MaxDispatchEntries pattern in case a future selection pass needs a # GPU-side counted append buffer sized off it. -const DDGI_MaxProbesPerFrame = `Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeCountY`; +const DDGI_MaxProbesPerFrame = Constants::DDGI_ProbeCountX * Constants::DDGI_ProbeCountY; # Mirrored once per frame by DDGI::update_frame() (DDGIGraph.cpp), same # reasoning as VoxelInfo (voxel.prism): grid_min is the world-space corner of @@ -511,25 +511,25 @@ ComputePSO DDGIProbeConvolve [SetupCondition = DDGISelectors::enabled] PassNode DDGIProbeSelect { - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_Probes; - [Always = UnorderedAccess | Static] [Size = `ivec2(Constants::DDGI_AtlasWidth, Constants::DDGI_AtlasHeight)`] [ArrayCount = `Constants::DDGI_AtlasArraySlices`] [Format = R16G16B16A16_FLOAT] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = ivec2(Constants::DDGI_AtlasWidth, Constants::DDGI_AtlasHeight)] [ArrayCount = Constants::DDGI_AtlasArraySlices] [Format = R16G16B16A16_FLOAT] [Optional = data.pass_index == 0] Texture DDGI_ProbeIrradiance; - [Always = UnorderedAccess | Static] [Size = `ivec2(Constants::DDGI_AtlasWidth, Constants::DDGI_AtlasHeight)`] [ArrayCount = `Constants::DDGI_AtlasArraySlices`] [Format = R16G16_FLOAT] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = ivec2(Constants::DDGI_AtlasWidth, Constants::DDGI_AtlasHeight)] [ArrayCount = Constants::DDGI_AtlasArraySlices] [Format = R16G16_FLOAT] [Optional = data.pass_index == 0] Texture DDGI_ProbeVisibility; # Per-probe-per-cascade residency flag (0/1) -- see # DDGIProbeResidencyMark's own PassNode comment below for what sets it # and why. Same sole-creator reasoning as Irradiance/Visibility above. - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_ProbeResidency; # One DispatchRaysArguments (raytracing.prism) record per cascade -- the # GPU-driven indirect-DispatchRays args buffer DDGIProbeDispatchArgsBuild # (below) fills and DDGIProbeTrace's own ExecuteIndirect reads. Same # sole-creator reasoning as the other shared buffers above. - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_DispatchRaysArgs; # Stream-compacted list of this cascade's needed probes (dense, from index @@ -539,9 +539,9 @@ PassNode DDGIProbeSelect # exactly as many rays as there are needed probes instead of the full # fixed atlas size. Worst case (every probe needed) is the same size as # DDGI_ProbeResidency -- same sole-creator reasoning as the buffers above. - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_CompactedProbeList; - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_CompactedProbeCount; # Hit-point-driven marking's one-frame-lagged inbox (see @@ -557,7 +557,7 @@ PassNode DDGIProbeSelect # same-frame chicken-and-egg (IndirectRTX itself runs AFTER this frame's # DDGIProbeResidencyMark/Trace/Convolve, so its own hits can only ever # affect NEXT frame's residency, never this one's). - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_ProbeResidencyPending; # Consecutive frames a currently-resident probe has gone unhit -- lets @@ -566,7 +566,7 @@ PassNode DDGIProbeSelect # of evicting the instant a single frame's pending bit comes back 0. See # DDGIInfo::flags.w (eviction_grace_frames) and DDGIProbeResidencyMark's # own comment for the exact rule. - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_ProbeMissStreak; } @@ -741,7 +741,7 @@ PassNode DDGIProbeTrace # own any more (see this PassNode's own comment for why). Sole creator, # same [Optional = pass_index == 0] pattern the old radiance/gbuffer # textures used. - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount * Constants::DDGI_ProbeRayCount`] [Optional = data.pass_index == 0] + [Always = UnorderedAccess | Static] [Size = Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount * Constants::DDGI_ProbeRayCount] [Optional = data.pass_index == 0] StructuredBuffer DDGI_ProbeRayRadiance; } diff --git a/sources/Prism/defs/pssm.prism b/sources/Prism/defs/pssm.prism index 8c01a29f8..6eb423a99 100644 --- a/sources/Prism/defs/pssm.prism +++ b/sources/Prism/defs/pssm.prism @@ -181,8 +181,8 @@ PassNode PSSM_Cascade # negation" (see create_always()'s own comment, pass.jinja) -- instance 0 # creates PSSM_Depths/PSSM_Cameras with the real desc, every other # instance just needs what instance 0 already created. - [Always = DepthStencil] [Size = 1024] [Format = R32_TYPELESS] [ArrayCount = `Constants::PSSM_RendersSize`] [Optional = data.pass_index == 0] Texture PSSM_Depths; - [Always = CopyDest] [Size = `Constants::PSSM_RendersSize`] [Optional = data.pass_index == 0] StructuredBuffer PSSM_Cameras; + [Always = DepthStencil] [Size = 1024] [Format = R32_TYPELESS] [ArrayCount = Constants::PSSM_RendersSize] [Optional = data.pass_index == 0] Texture PSSM_Depths; + [Always = CopyDest] [Size = Constants::PSSM_RendersSize] [Optional = data.pass_index == 0] StructuredBuffer PSSM_Cameras; } [RunAlways] diff --git a/sources/Prism/defs/raytracing.prism b/sources/Prism/defs/raytracing.prism index a09568596..f07c4a20b 100644 --- a/sources/Prism/defs/raytracing.prism +++ b/sources/Prism/defs/raytracing.prism @@ -472,7 +472,7 @@ PassNode RTXShadow [Always = None] Texture GBuffer_DepthMips; [Always = Read] Texture GBuffer_DepthPrev; [Always = UnorderedAccess] [Size = ViewportContext::frame_size] [Format = R16G16B16A16_FLOAT] Texture ShadowMask; - [Always = UnorderedAccess] [Size = `(size_t)Constants::WG_TileSection`] ByteAdressBuffer WorkGraphBuffer; + [Always = UnorderedAccess] [Size = Constants::WG_TileSection] ByteAdressBuffer WorkGraphBuffer; } # Debug reference mode for RTXShadow (see RTX::debug_full_reference_shadow diff --git a/sources/Prism/defs/scene.prism b/sources/Prism/defs/scene.prism index 91e3b39df..527d94120 100644 --- a/sources/Prism/defs/scene.prism +++ b/sources/Prism/defs/scene.prism @@ -161,9 +161,9 @@ PassNode Scene # frame's HiZ, so the contents must survive across frames (no aliasing). # MipCount=0: full auto mip chain (a Hi-Z pyramid), matching the original # manual create()'s omitted 4th Desc field. - [Always = DepthStencil | Static] [Size = `builder.graph->get_context().frame_size / 8`] [Format = R32_TYPELESS] [MipCount = 0] + [Always = DepthStencil | Static] [Size = ViewportContext::frame_size / 8] [Format = R32_TYPELESS] [MipCount = 0] Texture GBuffer_HiZ; - [Always = UnorderedAccess] [Size = `builder.graph->get_context().frame_size / 8`] [Format = R32_FLOAT] [MipCount = 0] + [Always = UnorderedAccess] [Size = ViewportContext::frame_size / 8] [Format = R32_FLOAT] [MipCount = 0] Texture GBuffer_HiZ_UAV; [Always = Read] StructuredBuffer scene; } diff --git a/sources/Prism/defs/voxel.prism b/sources/Prism/defs/voxel.prism index 17efdddcc..68d7f7b09 100644 --- a/sources/Prism/defs/voxel.prism +++ b/sources/Prism/defs/voxel.prism @@ -393,29 +393,29 @@ PassNode GBufferDownsampler # Raw [Size]: no grammar support for arithmetic, so the half-res transform # is pasted as a literal C++ expression -- Prism doesn't interpret it, # it's exactly the same (size+1)/2 the hand-written code used to compute. - [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R32_FLOAT] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 2)] [Format = R32_FLOAT] Texture GBuffer_HalfDepth; - [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R8G8B8A8_UNORM] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 2)] [Format = R8G8B8A8_UNORM] Texture GBuffer_HalfNormals; # Worst case: every tile lands in the same bucket -- size each list for # the full tile count, same reasoning as VSM's own tile-classification # lists. `true` is the counted flag: GPU-appended (AppendStructuredBuffer), # needs a real counter. - [Always = UnorderedAccess] [Size = `(size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true`] + [Always = UnorderedAccess] [Size = area(tiles(ViewportContext::frame_size, 8))] [Counted] StructuredBuffer TileClassifyHi; - [Always = UnorderedAccess] [Size = `(size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true`] + [Always = UnorderedAccess] [Size = area(tiles(ViewportContext::frame_size, 8))] [Counted] StructuredBuffer TileClassifyLow; [Always = UnorderedAccess] [Size = ViewportContext::frame_size] [Format = R8_UINT] Texture TileClassifyMask; - [Always = UnorderedAccess] [Size = `ivec2(Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8), Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8))`] [Format = R8_UINT] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 8)] [Format = R8_UINT] Texture TileClassifyTiles; - [Always = UnorderedAccess] [Size = `(size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true`] + [Always = UnorderedAccess] [Size = area(tiles(ViewportContext::frame_size, 8))] [Counted] StructuredBuffer TileRoughnessHi; - [Always = UnorderedAccess] [Size = `(size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true`] + [Always = UnorderedAccess] [Size = area(tiles(ViewportContext::frame_size, 8))] [Counted] StructuredBuffer TileRoughnessLow; - [Always = UnorderedAccess] [Size = `ivec2(Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8), Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8))`] [Format = R8_UINT] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 8)] [Format = R8_UINT] Texture TileRoughnessTiles; } @@ -461,9 +461,9 @@ PassNode ReflectionRTXHalf [Always = Read] StructuredBuffer DDGI_ProbeResidency; [Always = UnorderedAccess] StructuredBuffer DDGI_ProbeResidencyPending; - [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R16G16B16A16_FLOAT] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 2)] [Format = R16G16B16A16_FLOAT] Texture RTXReflectionNoiseHalf; - [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R16G16B16A16_FLOAT] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 2)] [Format = R16G16B16A16_FLOAT] Texture RTXReflectionDirPdfHalf; } @@ -570,7 +570,7 @@ PassNode IndirectRTXHalf # (ddgi.prism). [Always = UnorderedAccess] StructuredBuffer DDGI_ProbeResidencyPending; - [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2)`] [Format = R16G16B16A16_FLOAT] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 2)] [Format = R16G16B16A16_FLOAT] Texture RTXIndirectNoiseHalf; } diff --git a/sources/Prism/defs/vsm.prism b/sources/Prism/defs/vsm.prism index 61ab72409..1ff9737f4 100644 --- a/sources/Prism/defs/vsm.prism +++ b/sources/Prism/defs/vsm.prism @@ -21,7 +21,7 @@ const MaxLevels = 26; # -- generous, not a measured real number. If a scene's mesh count x active # level count ever exceeds this, entries are clamped and logged once per # episode rather than overflowing the buffer. -const MaxDispatchEntries = `Constants::MaxLevels * 2048`; +const MaxDispatchEntries = Constants::MaxLevels * 2048; # Fixed page-table shape, shared between VSM.cpp's own page_table setup # (VSM::VSM()) and VSM_PageTable/VSM_PageHiZ/VSM_DirtySlots's own [Size=...] # below -- same one-source-of-truth reasoning as MaxLevels above. @@ -868,7 +868,7 @@ PassNode VSM_GatherDispatch # CopyDest. `true` = counted: clear_counter() and exec_indirect()'s # GPU-computed count both read the real counter an AppendStructuredBuffer # needs. - [Always = UnorderedAccess | Static] [Size = `(size_t)Constants::MaxDispatchEntries, true`] + [Always = UnorderedAccess | Static] [Size = Constants::MaxDispatchEntries] [Counted] StructuredBuffer VSM_DispatchCommands; } @@ -881,7 +881,7 @@ PassNode VSM_RenderPages [Always = DepthStencil] Texture VSM_Atlas; # One texel per (level, page) slot -- a VSM_PagesPerLevelSide square per # level, ArrayCount=MaxLevels slices. - [Always = CopyDest | Static] [Size = `ivec2(Constants::VSM_PagesPerLevelSide, Constants::VSM_PagesPerLevelSide)`] [Format = R32_UINT] [ArrayCount = `Constants::MaxLevels`] + [Always = CopyDest | Static] [Size = Constants::VSM_PagesPerLevelSide] [Format = R32_UINT] [ArrayCount = Constants::MaxLevels] Texture VSM_PageTable; # MaxPages = MaxLevels(26) * MaxPagesPerLevel(16), both constexpr in # VSM.ixx -- a real test of combined [Always = A | B] flags, not just a @@ -897,7 +897,7 @@ PassNode VSM_RenderPages # max/closest (Phase 5.18 Part A widened the pyramid to two channels). # ArrayCount=VSM_PhysicalPageCount (one Hi-Z pyramid slice per physical # page), MipCount=VSM_PyramidMipCount (full chain down to 1x1). - [Always = UnorderedAccess | Static] [Size = `ivec2(Constants::VSM_PageSize, Constants::VSM_PageSize)`] [Format = R32G32_FLOAT] [ArrayCount = `Constants::VSM_PhysicalPageCount`] [MipCount = `Constants::VSM_PyramidMipCount`] + [Always = UnorderedAccess | Static] [Size = Constants::VSM_PageSize] [Format = R32G32_FLOAT] [ArrayCount = Constants::VSM_PhysicalPageCount] [MipCount = Constants::VSM_PyramidMipCount] Texture VSM_PageHiZ; [Always = Read] StructuredBuffer VSM_DispatchCommands; # Phase 5.19: read here too (not just by VSM_GatherDispatch that wrote @@ -936,7 +936,7 @@ PassNode VSM_HiZRebuild # Sized to the whole physical slot budget -- every dirty page occupies a # distinct slot, a hard upper bound on how many entries this can ever # need in one frame. - [Always = CopyDest | Static] [Size = `(size_t)Constants::VSM_PhysicalPageCount`] + [Always = CopyDest | Static] [Size = Constants::VSM_PhysicalPageCount] StructuredBuffer VSM_DirtySlots; } @@ -971,11 +971,11 @@ PassNode VSM_BlockerClassify # directly, don't scale by a sub-group factor" sizing FrameClassification # uses, just with VSM's own 16x16 tile size instead of VoxelGI's 32x32. # `true` = counted (AppendStructuredBuffer, needs a real GPU counter). - [Always = UnorderedAccess] [Size = `2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true`] + [Always = UnorderedAccess] [Size = 2 * area(tiles(ViewportContext::frame_size, 16))] [Counted] StructuredBuffer VSM_LitTiles; - [Always = UnorderedAccess] [Size = `2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true`] + [Always = UnorderedAccess] [Size = 2 * area(tiles(ViewportContext::frame_size, 16))] [Counted] StructuredBuffer VSM_DarkTiles; - [Always = UnorderedAccess] [Size = `2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true`] + [Always = UnorderedAccess] [Size = 2 * area(tiles(ViewportContext::frame_size, 16))] [Counted] StructuredBuffer VSM_SearchTiles; } @@ -1026,13 +1026,13 @@ PassNode VSM_BlockerSearch # (and VSM_SearchTiles' own, this pass's own indirect dispatch source) # are VSM-owned buffers now, not FrameGraph fields -- see # VSM_BlockerClassify's own comment for why. - [Always = UnorderedAccess] [Size = `(size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true`] + [Always = UnorderedAccess] [Size = area(tiles(ViewportContext::frame_size, 16))] [Counted] StructuredBuffer VSM_ConfirmedLitTiles; - [Always = UnorderedAccess] [Size = `(size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true`] + [Always = UnorderedAccess] [Size = area(tiles(ViewportContext::frame_size, 16))] [Counted] StructuredBuffer VSM_BlurTiles; # See VSMSearchVerdictAppend's own comment -- cleared then written here, # read by VSM_ScreenSpaceShadow. - [Always = UnorderedAccess] [Size = `ivec2((builder.graph->get_context().frame_size.x + 15) / 16, (builder.graph->get_context().frame_size.y + 15) / 16)`] [Format = R8_UNORM] + [Always = UnorderedAccess] [Size = tiles(ViewportContext::frame_size, 16)] [Format = R8_UNORM] Texture VSM_AmbiguousMask; } diff --git a/sources/Prism/editor/gen_vs_extension.py b/sources/Prism/editor/gen_vs_extension.py index 0cf2485b3..37df14c49 100644 --- a/sources/Prism/editor/gen_vs_extension.py +++ b/sources/Prism/editor/gen_vs_extension.py @@ -8,9 +8,13 @@ language -- is the small table in SCOPES below. The VSIX also carries the language server: PrismLanguageClient.cs (compiled here -with the csc and VS assemblies from the local install) starts the bundled -bin/profile/prismc.exe with --lsp, which reports the same errors a generator -run would, live, in the Error List. +with the csc and VS assemblies from the local install) starts prismc.exe --lsp, +which reports the same errors a generator run would, live, in the Error List. +That prismc.exe is a COPY of bin/profile/prismc.exe taken when this script runs +(so VS never locks the build output): a server change -- diagnostics, +completion, colouring -- reaches VS only after rebuilding Prism, re-running this +script and reinstalling the VSIX. Set PRISM_LSP_SERVER to test a build without +reinstalling. Outputs (bin/editor/): prism.vsix install by double-clicking @@ -505,6 +509,18 @@ def build_grammar(rules, a): "captures": {"1": {"name": "entity.other.attribute-name.prism"}, "2": {"name": "keyword.operator.prism"}, "3": {"name": "constant.other.format.prism"}}}, + # [Always = Read | ExclusiveRead]: FrameGraph::ResourceFlags names, in + # the same #define colour as formats. Every name up to the next ] or + # , is coloured; whether it's a real flag is the language server's + # squiggle (option_enum in Validate.cpp has the list). Listed before + # the option-name rule below, which would otherwise win the tie. + {"begin": r"(?<=" + re_escape(osb) + r"|,)\s*(Always|RecreateFlags)\s*(=)", + "end": r"(?=" + re_escape(csb) + r"|,)", + "beginCaptures": {"1": {"name": "entity.other.attribute-name.prism"}, + "2": {"name": "keyword.operator.prism"}}, + "patterns": [{"include": "#comment"}, + {"name": "constant.other.format.prism", "match": ident}, + {"include": "#operator"}]}, {"match": r"(?<=" + re_escape(osb) + r"|,)\s*(" + ident + ")", "captures": {"1": {"name": "entity.other.attribute-name.prism"}}}, {"include": "#values"}, diff --git a/sources/Prism/templates/cpp/pass.jinja b/sources/Prism/templates/cpp/pass.jinja index 118451b24..ff6b37d7d 100644 --- a/sources/Prism/templates/cpp/pass.jinja +++ b/sources/Prism/templates/cpp/pass.jinja @@ -152,13 +152,13 @@ public: {{"{"}} {%- endif %} {%- if v.type == "Texture" or v.type == "TextureCube" or v.type == "Texture3D" %} -{%- if v.options.Size.value_atom.is_literal %} +{%- if size_is_scalar(pass.name, v.name) %} builder.create(data.{{v.name}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, {{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, {{v.options.ArrayCount.value_atom.expr if v.options.ArrayCount is defined else 1}}, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }, {{ resolve_flags_expr(pass.name, v.name) }}); {%- else %} builder.create(data.{{v.name}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, {{v.options.ArrayCount.value_atom.expr if v.options.ArrayCount is defined else 1}}, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }, {{ resolve_flags_expr(pass.name, v.name) }}); {%- endif %} {%- else %} - builder.create(data.{{v.name}}, { {{resolve_size_expr(pass.name, v.name)}} }, {{ resolve_flags_expr(pass.name, v.name) }}); + builder.create(data.{{v.name}}, { {{resolve_size_expr(pass.name, v.name)}}{{ ", true" if v.options.Counted is defined }} }, {{ resolve_flags_expr(pass.name, v.name) }}); {%- endif %} {%- if v.options.Optional is defined %} {{"}"}} @@ -177,13 +177,13 @@ public: builder.need(data.{{v.name}}, {{ resolve_flags_expr(pass.name, v.name) }}); {%- if v.options.Size is defined or v.options.Format is defined %} {%- if v.type == "Texture" or v.type == "TextureCube" or v.type == "Texture3D" %} -{%- if v.options.Size.value_atom.is_literal %} +{%- if size_is_scalar(pass.name, v.name) %} builder.recreate(data.{{v.options.Recreate.value_atom.expr}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, {{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, 1, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }, {{ resolve_recreate_flags_expr(pass.name, v.name) }}); {%- else %} builder.recreate(data.{{v.options.Recreate.value_atom.expr}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, 1, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }, {{ resolve_recreate_flags_expr(pass.name, v.name) }}); {%- endif %} {%- else %} - builder.recreate(data.{{v.options.Recreate.value_atom.expr}}, { {{resolve_size_expr(pass.name, v.name)}} }, {{ resolve_recreate_flags_expr(pass.name, v.name) }}); + builder.recreate(data.{{v.options.Recreate.value_atom.expr}}, { {{resolve_size_expr(pass.name, v.name)}}{{ ", true" if v.options.Counted is defined }} }, {{ resolve_recreate_flags_expr(pass.name, v.name) }}); {%- endif %} {%- else %} builder.recreate(data.{{v.options.Recreate.value_atom.expr}}, {{ resolve_recreate_flags_expr(pass.name, v.name) }}); @@ -240,13 +240,13 @@ public: if ({{v.options.Optional.value_atom.expr}}) {%- endif %} {%- if v.type == "Texture" or v.type == "TextureCube" or v.type == "Texture3D" %} -{%- if v.options.Size.value_atom.is_literal %} +{%- if size_is_scalar(pass.name, v.name) %} builder.create_versioned(data.{{v.name}}, cache.{{v.name}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, {{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, {{v.options.ArrayCount.value_atom.expr if v.options.ArrayCount is defined else 1}}, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }); {%- else %} builder.create_versioned(data.{{v.name}}, cache.{{v.name}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, {{v.options.ArrayCount.value_atom.expr if v.options.ArrayCount is defined else 1}}, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }); {%- endif %} {%- else %} - builder.create_versioned(data.{{v.name}}, cache.{{v.name}}, { {{resolve_size_expr(pass.name, v.name)}} }); + builder.create_versioned(data.{{v.name}}, cache.{{v.name}}, { {{resolve_size_expr(pass.name, v.name)}}{{ ", true" if v.options.Counted is defined }} }); {%- endif %} {%- if v.options.Optional is defined %} else @@ -258,13 +258,13 @@ public: {%- if v.options.Recreate is defined %} {%- if v.options.Always is defined and (v.options.Size is defined or v.options.Format is defined) %} {%- if v.type == "Texture" or v.type == "TextureCube" or v.type == "Texture3D" %} -{%- if v.options.Size.value_atom.is_literal %} +{%- if size_is_scalar(pass.name, v.name) %} builder.create_versioned(data.{{v.options.Recreate.value_atom.expr}}, cache.{{v.options.Recreate.value_atom.expr}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, {{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, 1, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }); {%- else %} builder.create_versioned(data.{{v.options.Recreate.value_atom.expr}}, cache.{{v.options.Recreate.value_atom.expr}}, { ivec3({{resolve_size_expr(pass.name, v.name)}}, 0), HAL::Format::{{v.options.Format.value_atom.expr}}, 1, {{v.options.MipCount.value_atom.expr if v.options.MipCount is defined else 1}} }); {%- endif %} {%- else %} - builder.create_versioned(data.{{v.options.Recreate.value_atom.expr}}, cache.{{v.options.Recreate.value_atom.expr}}, { {{resolve_size_expr(pass.name, v.name)}} }); + builder.create_versioned(data.{{v.options.Recreate.value_atom.expr}}, cache.{{v.options.Recreate.value_atom.expr}}, { {{resolve_size_expr(pass.name, v.name)}}{{ ", true" if v.options.Counted is defined }} }); {%- endif %} {%- else %} builder.load(data.{{v.options.Recreate.value_atom.expr}}, ResourceID::{{v.name}}, cache.{{v.options.Recreate.value_atom.expr}}); diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h index 08f556d62..0cbae01ef 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeSelect.h @@ -105,7 +105,7 @@ class DDGIProbeSelect : public PassNodeBase { if (data.pass_index == 0) { - builder.create(data.DDGI_Probes, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_Probes, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } if (data.pass_index == 0) { @@ -117,27 +117,27 @@ class DDGIProbeSelect : public PassNodeBase } if (data.pass_index == 0) { - builder.create(data.DDGI_ProbeResidency, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_ProbeResidency, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } if (data.pass_index == 0) { - builder.create(data.DDGI_DispatchRaysArgs, { (size_t)Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_DispatchRaysArgs, { Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } if (data.pass_index == 0) { - builder.create(data.DDGI_CompactedProbeList, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_CompactedProbeList, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } if (data.pass_index == 0) { - builder.create(data.DDGI_CompactedProbeCount, { (size_t)Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_CompactedProbeCount, { Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } if (data.pass_index == 0) { - builder.create(data.DDGI_ProbeResidencyPending, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_ProbeResidencyPending, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } if (data.pass_index == 0) { - builder.create(data.DDGI_ProbeMissStreak, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_ProbeMissStreak, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } } // Which chain link each handler field resolved to, one named slot per @@ -181,7 +181,7 @@ class DDGIProbeSelect : public PassNodeBase static void load_from_cache([[maybe_unused]] Context& data, [[maybe_unused]] const Cache& cache, [[maybe_unused]] const FrameGraph::TaskBuilder& builder) { if (data.pass_index == 0) - builder.create_versioned(data.DDGI_Probes, cache.DDGI_Probes, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_Probes, cache.DDGI_Probes, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_Probes, ResourceID::DDGI_Probes, cache.DDGI_Probes); if (data.pass_index == 0) @@ -193,27 +193,27 @@ class DDGIProbeSelect : public PassNodeBase else builder.load(data.DDGI_ProbeVisibility, ResourceID::DDGI_ProbeVisibility, cache.DDGI_ProbeVisibility); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_ProbeResidency, cache.DDGI_ProbeResidency, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_ProbeResidency, cache.DDGI_ProbeResidency, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_ProbeResidency, ResourceID::DDGI_ProbeResidency, cache.DDGI_ProbeResidency); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_DispatchRaysArgs, cache.DDGI_DispatchRaysArgs, { (size_t)Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_DispatchRaysArgs, cache.DDGI_DispatchRaysArgs, { Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_DispatchRaysArgs, ResourceID::DDGI_DispatchRaysArgs, cache.DDGI_DispatchRaysArgs); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_CompactedProbeList, cache.DDGI_CompactedProbeList, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_CompactedProbeList, cache.DDGI_CompactedProbeList, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_CompactedProbeList, ResourceID::DDGI_CompactedProbeList, cache.DDGI_CompactedProbeList); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_CompactedProbeCount, cache.DDGI_CompactedProbeCount, { (size_t)Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_CompactedProbeCount, cache.DDGI_CompactedProbeCount, { Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_CompactedProbeCount, ResourceID::DDGI_CompactedProbeCount, cache.DDGI_CompactedProbeCount); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_ProbeResidencyPending, cache.DDGI_ProbeResidencyPending, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_ProbeResidencyPending, cache.DDGI_ProbeResidencyPending, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_ProbeResidencyPending, ResourceID::DDGI_ProbeResidencyPending, cache.DDGI_ProbeResidencyPending); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_ProbeMissStreak, cache.DDGI_ProbeMissStreak, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); + builder.create_versioned(data.DDGI_ProbeMissStreak, cache.DDGI_ProbeMissStreak, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount }); else builder.load(data.DDGI_ProbeMissStreak, ResourceID::DDGI_ProbeMissStreak, cache.DDGI_ProbeMissStreak); } diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h index eb3290ef5..60edc8e89 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/DDGIProbeTrace.h @@ -112,7 +112,7 @@ class DDGIProbeTrace : public PassNodeBase { if (data.pass_index == 0) { - builder.create(data.DDGI_ProbeRayRadiance, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount * Constants::DDGI_ProbeRayCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.DDGI_ProbeRayRadiance, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount * Constants::DDGI_ProbeRayCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } } // Which chain link each handler field resolved to, one named slot per @@ -176,7 +176,7 @@ class DDGIProbeTrace : public PassNodeBase builder.load(data.VSM_PageTable, ResourceID::VSM_PageTable, cache.VSM_PageTable); builder.load(data.VSM_PageCameras, ResourceID::VSM_PageCameras, cache.VSM_PageCameras); if (data.pass_index == 0) - builder.create_versioned(data.DDGI_ProbeRayRadiance, cache.DDGI_ProbeRayRadiance, { (size_t)Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount * Constants::DDGI_ProbeRayCount }); + builder.create_versioned(data.DDGI_ProbeRayRadiance, cache.DDGI_ProbeRayRadiance, { Constants::DDGI_ProbeCount * Constants::DDGI_CascadeCount * Constants::DDGI_ProbeRayCount }); else builder.load(data.DDGI_ProbeRayRadiance, ResourceID::DDGI_ProbeRayRadiance, cache.DDGI_ProbeRayRadiance); } diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h b/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h index e0055a07e..51dd1a8f1 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/GBufferDownsampler.h @@ -103,15 +103,15 @@ class GBufferDownsampler : public PassNodeBase static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { builder.create(data.GBuffer_TempColor, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R8G8_UNORM, 1, 1 }, FrameGraph::ResourceFlags::RenderTarget); - builder.create(data.GBuffer_HalfDepth, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R32_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.GBuffer_HalfNormals, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R8G8B8A8_UNORM, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.TileClassifyHi, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.TileClassifyLow, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.GBuffer_HalfDepth, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R32_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.GBuffer_HalfNormals, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R8G8B8A8_UNORM, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.TileClassifyHi, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.TileClassifyLow, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }, FrameGraph::ResourceFlags::UnorderedAccess); builder.create(data.TileClassifyMask, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R8_UINT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.TileClassifyTiles, { ivec3(ivec2(Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8), Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8)), 0), HAL::Format::R8_UINT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.TileRoughnessHi, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.TileRoughnessLow, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.TileRoughnessTiles, { ivec3(ivec2(Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8), Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8)), 0), HAL::Format::R8_UINT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.TileClassifyTiles, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8), 0), HAL::Format::R8_UINT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.TileRoughnessHi, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.TileRoughnessLow, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.TileRoughnessTiles, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8), 0), HAL::Format::R8_UINT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -171,15 +171,15 @@ class GBufferDownsampler : public PassNodeBase builder.load(data.GBuffer_Speed, ResourceID::GBuffer_Speed, cache.GBuffer_Speed); builder.load(data.GBuffer_DepthMips, ResourceID::GBuffer_DepthMips, cache.GBuffer_DepthMips); builder.create_versioned(data.GBuffer_TempColor, cache.GBuffer_TempColor, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R8G8_UNORM, 1, 1 }); - builder.create_versioned(data.GBuffer_HalfDepth, cache.GBuffer_HalfDepth, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R32_FLOAT, 1, 1 }); - builder.create_versioned(data.GBuffer_HalfNormals, cache.GBuffer_HalfNormals, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R8G8B8A8_UNORM, 1, 1 }); - builder.create_versioned(data.TileClassifyHi, cache.TileClassifyHi, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }); - builder.create_versioned(data.TileClassifyLow, cache.TileClassifyLow, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }); + builder.create_versioned(data.GBuffer_HalfDepth, cache.GBuffer_HalfDepth, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R32_FLOAT, 1, 1 }); + builder.create_versioned(data.GBuffer_HalfNormals, cache.GBuffer_HalfNormals, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R8G8B8A8_UNORM, 1, 1 }); + builder.create_versioned(data.TileClassifyHi, cache.TileClassifyHi, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }); + builder.create_versioned(data.TileClassifyLow, cache.TileClassifyLow, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }); builder.create_versioned(data.TileClassifyMask, cache.TileClassifyMask, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R8_UINT, 1, 1 }); - builder.create_versioned(data.TileClassifyTiles, cache.TileClassifyTiles, { ivec3(ivec2(Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8), Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8)), 0), HAL::Format::R8_UINT, 1, 1 }); - builder.create_versioned(data.TileRoughnessHi, cache.TileRoughnessHi, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }); - builder.create_versioned(data.TileRoughnessLow, cache.TileRoughnessLow, { (size_t)Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8) * Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8), true }); - builder.create_versioned(data.TileRoughnessTiles, cache.TileRoughnessTiles, { ivec3(ivec2(Math::DivideByMultiple(builder.graph->get_context().frame_size.x, 8), Math::DivideByMultiple(builder.graph->get_context().frame_size.y, 8)), 0), HAL::Format::R8_UINT, 1, 1 }); + builder.create_versioned(data.TileClassifyTiles, cache.TileClassifyTiles, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8), 0), HAL::Format::R8_UINT, 1, 1 }); + builder.create_versioned(data.TileRoughnessHi, cache.TileRoughnessHi, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }); + builder.create_versioned(data.TileRoughnessLow, cache.TileRoughnessLow, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8)), true }); + builder.create_versioned(data.TileRoughnessTiles, cache.TileRoughnessTiles, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 8), 0), HAL::Format::R8_UINT, 1, 1 }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h b/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h index f98aff37b..d3341406a 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/IndirectRTXHalf.h @@ -91,7 +91,7 @@ class IndirectRTXHalf : public PassNodeBase // runtime state. static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { - builder.create(data.RTXIndirectNoiseHalf, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.RTXIndirectNoiseHalf, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -144,7 +144,7 @@ class IndirectRTXHalf : public PassNodeBase builder.load(data.DDGI_ProbeVisibility, ResourceID::DDGI_ProbeVisibility, cache.DDGI_ProbeVisibility); builder.load(data.DDGI_ProbeResidency, ResourceID::DDGI_ProbeResidency, cache.DDGI_ProbeResidency); builder.load(data.DDGI_ProbeResidencyPending, ResourceID::DDGI_ProbeResidencyPending, cache.DDGI_ProbeResidencyPending); - builder.create_versioned(data.RTXIndirectNoiseHalf, cache.RTXIndirectNoiseHalf, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); + builder.create_versioned(data.RTXIndirectNoiseHalf, cache.RTXIndirectNoiseHalf, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h b/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h index c2ee9c940..800c3d3ff 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/RTXShadow.h @@ -87,7 +87,7 @@ class RTXShadow : public PassNodeBase static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { builder.create(data.ShadowMask, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.WorkGraphBuffer, { (size_t)Constants::WG_TileSection }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.WorkGraphBuffer, { Constants::WG_TileSection }, FrameGraph::ResourceFlags::UnorderedAccess); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -137,7 +137,7 @@ class RTXShadow : public PassNodeBase builder.load(data.GBuffer_DepthMips, ResourceID::GBuffer_DepthMips, cache.GBuffer_DepthMips); builder.load(data.GBuffer_DepthPrev, ResourceID::GBuffer_DepthPrev, cache.GBuffer_DepthPrev); builder.create_versioned(data.ShadowMask, cache.ShadowMask, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); - builder.create_versioned(data.WorkGraphBuffer, cache.WorkGraphBuffer, { (size_t)Constants::WG_TileSection }); + builder.create_versioned(data.WorkGraphBuffer, cache.WorkGraphBuffer, { Constants::WG_TileSection }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h b/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h index edc561dde..aacd0e0ef 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/ReflectionRTXHalf.h @@ -94,8 +94,8 @@ class ReflectionRTXHalf : public PassNodeBase // runtime state. static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { - builder.create(data.RTXReflectionNoiseHalf, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.RTXReflectionDirPdfHalf, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.RTXReflectionNoiseHalf, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.RTXReflectionDirPdfHalf, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -150,8 +150,8 @@ class ReflectionRTXHalf : public PassNodeBase builder.load(data.DDGI_ProbeVisibility, ResourceID::DDGI_ProbeVisibility, cache.DDGI_ProbeVisibility); builder.load(data.DDGI_ProbeResidency, ResourceID::DDGI_ProbeResidency, cache.DDGI_ProbeResidency); builder.load(data.DDGI_ProbeResidencyPending, ResourceID::DDGI_ProbeResidencyPending, cache.DDGI_ProbeResidencyPending); - builder.create_versioned(data.RTXReflectionNoiseHalf, cache.RTXReflectionNoiseHalf, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); - builder.create_versioned(data.RTXReflectionDirPdfHalf, cache.RTXReflectionDirPdfHalf, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 1) / 2, (builder.graph->get_context().frame_size.y + 1) / 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); + builder.create_versioned(data.RTXReflectionNoiseHalf, cache.RTXReflectionNoiseHalf, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); + builder.create_versioned(data.RTXReflectionDirPdfHalf, cache.RTXReflectionDirPdfHalf, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 2), 0), HAL::Format::R16G16B16A16_FLOAT, 1, 1 }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h index 689232cbd..d30f9db93 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerClassify.h @@ -92,9 +92,9 @@ class VSM_BlockerClassify : public PassNodeBase // runtime state. static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { - builder.create(data.VSM_LitTiles, { 2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.VSM_DarkTiles, { 2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.VSM_SearchTiles, { 2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.VSM_LitTiles, { 2 * Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.VSM_DarkTiles, { 2 * Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.VSM_SearchTiles, { 2 * Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -148,9 +148,9 @@ class VSM_BlockerClassify : public PassNodeBase builder.load(data.VSM_PageTable, ResourceID::VSM_PageTable, cache.VSM_PageTable); builder.load(data.VSM_PageCameras, ResourceID::VSM_PageCameras, cache.VSM_PageCameras); builder.load(data.VSM_PageHiZ, ResourceID::VSM_PageHiZ, cache.VSM_PageHiZ); - builder.create_versioned(data.VSM_LitTiles, cache.VSM_LitTiles, { 2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }); - builder.create_versioned(data.VSM_DarkTiles, cache.VSM_DarkTiles, { 2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }); - builder.create_versioned(data.VSM_SearchTiles, cache.VSM_SearchTiles, { 2 * (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }); + builder.create_versioned(data.VSM_LitTiles, cache.VSM_LitTiles, { 2 * Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }); + builder.create_versioned(data.VSM_DarkTiles, cache.VSM_DarkTiles, { 2 * Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }); + builder.create_versioned(data.VSM_SearchTiles, cache.VSM_SearchTiles, { 2 * Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h index ba9a93b91..a0ebd0f72 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_BlockerSearch.h @@ -108,9 +108,9 @@ class VSM_BlockerSearch : public PassNodeBase static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { builder.create(data.VSM_BlockerSearchResult, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R32G32B32A32_UINT, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.VSM_ConfirmedLitTiles, { (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.VSM_BlurTiles, { (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); - builder.create(data.VSM_AmbiguousMask, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 15) / 16, (builder.graph->get_context().frame_size.y + 15) / 16), 0), HAL::Format::R8_UNORM, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.VSM_ConfirmedLitTiles, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.VSM_BlurTiles, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }, FrameGraph::ResourceFlags::UnorderedAccess); + builder.create(data.VSM_AmbiguousMask, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16), 0), HAL::Format::R8_UNORM, 1, 1 }, FrameGraph::ResourceFlags::UnorderedAccess); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -176,9 +176,9 @@ class VSM_BlockerSearch : public PassNodeBase builder.load(data.BlueNoise, ResourceID::BlueNoise, cache.BlueNoise); builder.load(data.VSM_SearchTiles, ResourceID::VSM_SearchTiles, cache.VSM_SearchTiles); builder.create_versioned(data.VSM_BlockerSearchResult, cache.VSM_BlockerSearchResult, { ivec3(builder.graph->get_context().frame_size, 0), HAL::Format::R32G32B32A32_UINT, 1, 1 }); - builder.create_versioned(data.VSM_ConfirmedLitTiles, cache.VSM_ConfirmedLitTiles, { (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }); - builder.create_versioned(data.VSM_BlurTiles, cache.VSM_BlurTiles, { (size_t)(((builder.graph->get_context().frame_size.x + 15) / 16) * ((builder.graph->get_context().frame_size.y + 15) / 16)), true }); - builder.create_versioned(data.VSM_AmbiguousMask, cache.VSM_AmbiguousMask, { ivec3(ivec2((builder.graph->get_context().frame_size.x + 15) / 16, (builder.graph->get_context().frame_size.y + 15) / 16), 0), HAL::Format::R8_UNORM, 1, 1 }); + builder.create_versioned(data.VSM_ConfirmedLitTiles, cache.VSM_ConfirmedLitTiles, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }); + builder.create_versioned(data.VSM_BlurTiles, cache.VSM_BlurTiles, { Math::Area(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16)), true }); + builder.create_versioned(data.VSM_AmbiguousMask, cache.VSM_AmbiguousMask, { ivec3(Math::DivideByMultiple(builder.graph->get_context().frame_size, 16), 0), HAL::Format::R8_UNORM, 1, 1 }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h index ddac4c730..8cc2375c2 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_GatherDispatch.h @@ -39,7 +39,7 @@ class VSM_GatherDispatch : public PassNodeBase static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { builder.create(data.VSM_LevelDispatchInfo, { 26 }, FrameGraph::ResourceFlags::CopyDest | FrameGraph::ResourceFlags::Static); - builder.create(data.VSM_DispatchCommands, { (size_t)Constants::MaxDispatchEntries, true }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.VSM_DispatchCommands, { Constants::MaxDispatchEntries, true }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -68,7 +68,7 @@ class VSM_GatherDispatch : public PassNodeBase static void load_from_cache([[maybe_unused]] Context& data, [[maybe_unused]] const Cache& cache, [[maybe_unused]] const FrameGraph::TaskBuilder& builder) { builder.create_versioned(data.VSM_LevelDispatchInfo, cache.VSM_LevelDispatchInfo, { 26 }); - builder.create_versioned(data.VSM_DispatchCommands, cache.VSM_DispatchCommands, { (size_t)Constants::MaxDispatchEntries, true }); + builder.create_versioned(data.VSM_DispatchCommands, cache.VSM_DispatchCommands, { Constants::MaxDispatchEntries, true }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h index c8f76a367..c3e8d13f3 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_HiZRebuild.h @@ -63,7 +63,7 @@ class VSM_HiZRebuild : public PassNodeBase // runtime state. static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { - builder.create(data.VSM_DirtySlots, { (size_t)Constants::VSM_PhysicalPageCount }, FrameGraph::ResourceFlags::CopyDest | FrameGraph::ResourceFlags::Static); + builder.create(data.VSM_DirtySlots, { Constants::VSM_PhysicalPageCount }, FrameGraph::ResourceFlags::CopyDest | FrameGraph::ResourceFlags::Static); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -95,7 +95,7 @@ class VSM_HiZRebuild : public PassNodeBase { builder.load(data.VSM_Atlas, ResourceID::VSM_Atlas, cache.VSM_Atlas); builder.load(data.VSM_PageHiZ, ResourceID::VSM_PageHiZ, cache.VSM_PageHiZ); - builder.create_versioned(data.VSM_DirtySlots, cache.VSM_DirtySlots, { (size_t)Constants::VSM_PhysicalPageCount }); + builder.create_versioned(data.VSM_DirtySlots, cache.VSM_DirtySlots, { Constants::VSM_PhysicalPageCount }); } // Resources this pass touches, in declaration order, each paired with diff --git a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h index 0a166ce00..e882482fb 100644 --- a/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h +++ b/sources/RenderSystem/FrameGraph/autogen/pass/VSM_RenderPages.h @@ -70,9 +70,9 @@ class VSM_RenderPages : public PassNodeBase // runtime state. static void create_always(Context& data, FrameGraph::TaskBuilder& builder) { - builder.create(data.VSM_PageTable, { ivec3(ivec2(Constants::VSM_PagesPerLevelSide, Constants::VSM_PagesPerLevelSide), 0), HAL::Format::R32_UINT, Constants::MaxLevels, 1 }, FrameGraph::ResourceFlags::CopyDest | FrameGraph::ResourceFlags::Static); + builder.create(data.VSM_PageTable, { ivec3(Constants::VSM_PagesPerLevelSide, Constants::VSM_PagesPerLevelSide, 0), HAL::Format::R32_UINT, Constants::MaxLevels, 1 }, FrameGraph::ResourceFlags::CopyDest | FrameGraph::ResourceFlags::Static); builder.create(data.VSM_PageCameras, { 416 }, FrameGraph::ResourceFlags::CopyDest | FrameGraph::ResourceFlags::Static); - builder.create(data.VSM_PageHiZ, { ivec3(ivec2(Constants::VSM_PageSize, Constants::VSM_PageSize), 0), HAL::Format::R32G32_FLOAT, Constants::VSM_PhysicalPageCount, Constants::VSM_PyramidMipCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); + builder.create(data.VSM_PageHiZ, { ivec3(Constants::VSM_PageSize, Constants::VSM_PageSize, 0), HAL::Format::R32G32_FLOAT, Constants::VSM_PhysicalPageCount, Constants::VSM_PyramidMipCount }, FrameGraph::ResourceFlags::UnorderedAccess | FrameGraph::ResourceFlags::Static); } // Which chain link each handler field resolved to, one named slot per // field. Filled from a live frame's finished Context and applied on a @@ -109,9 +109,9 @@ class VSM_RenderPages : public PassNodeBase static void load_from_cache([[maybe_unused]] Context& data, [[maybe_unused]] const Cache& cache, [[maybe_unused]] const FrameGraph::TaskBuilder& builder) { builder.load(data.VSM_Atlas, ResourceID::VSM_Atlas, cache.VSM_Atlas); - builder.create_versioned(data.VSM_PageTable, cache.VSM_PageTable, { ivec3(ivec2(Constants::VSM_PagesPerLevelSide, Constants::VSM_PagesPerLevelSide), 0), HAL::Format::R32_UINT, Constants::MaxLevels, 1 }); + builder.create_versioned(data.VSM_PageTable, cache.VSM_PageTable, { ivec3(Constants::VSM_PagesPerLevelSide, Constants::VSM_PagesPerLevelSide, 0), HAL::Format::R32_UINT, Constants::MaxLevels, 1 }); builder.create_versioned(data.VSM_PageCameras, cache.VSM_PageCameras, { 416 }); - builder.create_versioned(data.VSM_PageHiZ, cache.VSM_PageHiZ, { ivec3(ivec2(Constants::VSM_PageSize, Constants::VSM_PageSize), 0), HAL::Format::R32G32_FLOAT, Constants::VSM_PhysicalPageCount, Constants::VSM_PyramidMipCount }); + builder.create_versioned(data.VSM_PageHiZ, cache.VSM_PageHiZ, { ivec3(Constants::VSM_PageSize, Constants::VSM_PageSize, 0), HAL::Format::R32G32_FLOAT, Constants::VSM_PhysicalPageCount, Constants::VSM_PyramidMipCount }); builder.load(data.VSM_DispatchCommands, ResourceID::VSM_DispatchCommands, cache.VSM_DispatchCommands); builder.load(data.VSM_LevelDispatchInfo, ResourceID::VSM_LevelDispatchInfo, cache.VSM_LevelDispatchInfo); } diff --git a/workdir/shaders/autogen/CullingArgsReset.h b/workdir/shaders/autogen/CullingArgsReset.h deleted file mode 100644 index 308ebd4b3..000000000 --- a/workdir/shaders/autogen/CullingArgsReset.h +++ /dev/null @@ -1,35 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#ifndef SLOT_5 - #define SLOT_5 -#else - #error Slot 5 is already used -#endif - -#include "layout/DefaultLayout.h" -#include "tables/CullingArgsReset.h" - -#ifndef CB_DEFINED -#define CB_DEFINED -struct CB { uint offset; }; -#endif - -#ifdef __spirv__ -struct _CB_CullingArgsReset { uint offset; }; -static _CB_CullingArgsReset pass_CullingArgsReset = { _hal_push.s5 }; -#else -ConstantBuffer pass_CullingArgsReset: register(b5, space5); -#endif -ConstantBuffer CreateCullingArgsReset() -{ - return ResourceDescriptorHeap[pass_CullingArgsReset.offset]; -} - -#ifndef NO_GLOBAL -static const ConstantBuffer cullingArgsReset_global = CreateCullingArgsReset(); -ConstantBuffer GetCullingArgsReset() { return cullingArgsReset_global; } -#endif \ No newline at end of file diff --git a/workdir/shaders/autogen/GraphInput.h b/workdir/shaders/autogen/GraphInput.h deleted file mode 100644 index bda3f50a9..000000000 --- a/workdir/shaders/autogen/GraphInput.h +++ /dev/null @@ -1,36 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#ifndef SLOT_0 - #define SLOT_0 -#else - #error Slot 0 is already used -#endif - -#include "layout/NoneLayout.h" -#include "tables/GraphInput.h" - -#ifndef CB_DEFINED -#define CB_DEFINED -struct CB { uint offset; }; -#endif - -#ifdef __spirv__ -struct _CB_GraphInput { uint offset; }; -static _CB_GraphInput pass_GraphInput = { _hal_push.s0 }; -#else -ConstantBuffer pass_GraphInput: register(b0, space0); -#endif - -ConstantBuffer CreateGraphInput() -{ - return ResourceDescriptorHeap[pass_GraphInput.offset]; -} - -#ifndef NO_GLOBAL -static const ConstantBuffer graphInput_global = CreateGraphInput(); -ConstantBuffer GetGraphInput(){ return graphInput_global; } -#endif \ No newline at end of file diff --git a/workdir/shaders/autogen/VSMBlockerClassifyInitDispatch.h b/workdir/shaders/autogen/VSMBlockerClassifyInitDispatch.h deleted file mode 100644 index e2c573eed..000000000 --- a/workdir/shaders/autogen/VSMBlockerClassifyInitDispatch.h +++ /dev/null @@ -1,35 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#ifndef SLOT_4 - #define SLOT_4 -#else - #error Slot 4 is already used -#endif - -#include "layout/DefaultLayout.h" -#include "tables/VSMBlockerClassifyInitDispatch.h" - -#ifndef CB_DEFINED -#define CB_DEFINED -struct CB { uint offset; }; -#endif - -#ifdef __spirv__ -struct _CB_VSMBlockerClassifyInitDispatch { uint offset; }; -static _CB_VSMBlockerClassifyInitDispatch pass_VSMBlockerClassifyInitDispatch = { _hal_push.s4 }; -#else -ConstantBuffer pass_VSMBlockerClassifyInitDispatch: register(b4, space4); -#endif -ConstantBuffer CreateVSMBlockerClassifyInitDispatch() -{ - return ResourceDescriptorHeap[pass_VSMBlockerClassifyInitDispatch.offset]; -} - -#ifndef NO_GLOBAL -static const ConstantBuffer vSMBlockerClassifyInitDispatch_global = CreateVSMBlockerClassifyInitDispatch(); -ConstantBuffer GetVSMBlockerClassifyInitDispatch() { return vSMBlockerClassifyInitDispatch_global; } -#endif \ No newline at end of file diff --git a/workdir/shaders/autogen/VSMSearchVerdictInitDispatch.h b/workdir/shaders/autogen/VSMSearchVerdictInitDispatch.h deleted file mode 100644 index 58df88bf7..000000000 --- a/workdir/shaders/autogen/VSMSearchVerdictInitDispatch.h +++ /dev/null @@ -1,35 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#ifndef SLOT_4 - #define SLOT_4 -#else - #error Slot 4 is already used -#endif - -#include "layout/DefaultLayout.h" -#include "tables/VSMSearchVerdictInitDispatch.h" - -#ifndef CB_DEFINED -#define CB_DEFINED -struct CB { uint offset; }; -#endif - -#ifdef __spirv__ -struct _CB_VSMSearchVerdictInitDispatch { uint offset; }; -static _CB_VSMSearchVerdictInitDispatch pass_VSMSearchVerdictInitDispatch = { _hal_push.s4 }; -#else -ConstantBuffer pass_VSMSearchVerdictInitDispatch: register(b4, space4); -#endif -ConstantBuffer CreateVSMSearchVerdictInitDispatch() -{ - return ResourceDescriptorHeap[pass_VSMSearchVerdictInitDispatch.offset]; -} - -#ifndef NO_GLOBAL -static const ConstantBuffer vSMSearchVerdictInitDispatch_global = CreateVSMSearchVerdictInitDispatch(); -ConstantBuffer GetVSMSearchVerdictInitDispatch() { return vSMSearchVerdictInitDispatch_global; } -#endif \ No newline at end of file diff --git a/workdir/shaders/autogen/tables/CullingArgsReset.h b/workdir/shaders/autogen/tables/CullingArgsReset.h deleted file mode 100644 index c720d7516..000000000 --- a/workdir/shaders/autogen/tables/CullingArgsReset.h +++ /dev/null @@ -1,21 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#pragma once -#include "sig_hlsl.hlsl" -#include "DispatchArguments.h" -#include "DrawIndexedArguments.h" -struct CullingArgsReset -{ - uint drawBoxesArgs; // RWStructuredBuffer - uint gatherMeshesArgs; // RWStructuredBuffer - uint renderArgs; // RWStructuredBuffer - uint retestArgs; // RWStructuredBuffer - RWStructuredBuffer GetDrawBoxesArgs() { return ResourceDescriptorHeap[drawBoxesArgs]; } - RWStructuredBuffer GetGatherMeshesArgs() { return ResourceDescriptorHeap[gatherMeshesArgs]; } - RWStructuredBuffer GetRenderArgs() { return ResourceDescriptorHeap[renderArgs]; } - RWStructuredBuffer GetRetestArgs() { return ResourceDescriptorHeap[retestArgs]; } -}; \ No newline at end of file diff --git a/workdir/shaders/autogen/tables/DeviceCapabilities.h b/workdir/shaders/autogen/tables/DeviceCapabilities.h deleted file mode 100644 index d0fba5832..000000000 --- a/workdir/shaders/autogen/tables/DeviceCapabilities.h +++ /dev/null @@ -1,16 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#pragma once -#include "sig_hlsl.hlsl" -#include "enums.h" -struct DeviceCapabilities -{ - bool rtx_supported; // bool - bool dlssrr_available; // bool - bool GetRtx_supported() { return rtx_supported; } - bool GetDlssrr_available() { return dlssrr_available; } -}; \ No newline at end of file diff --git a/workdir/shaders/autogen/tables/VSMBlockerClassifyInitDispatch.h b/workdir/shaders/autogen/tables/VSMBlockerClassifyInitDispatch.h deleted file mode 100644 index 94a85ab3c..000000000 --- a/workdir/shaders/autogen/tables/VSMBlockerClassifyInitDispatch.h +++ /dev/null @@ -1,24 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#pragma once -#include "sig_hlsl.hlsl" -#include "DispatchArguments.h" -struct VSMBlockerClassifyInitDispatch -{ - uint lit_counter; // StructuredBuffer - uint dark_counter; // StructuredBuffer - uint search_counter; // StructuredBuffer - uint lit_dispatch_data; // RWStructuredBuffer - uint dark_dispatch_data; // RWStructuredBuffer - uint search_dispatch_data; // RWStructuredBuffer - StructuredBuffer GetLit_counter() { return ResourceDescriptorHeap[lit_counter]; } - StructuredBuffer GetDark_counter() { return ResourceDescriptorHeap[dark_counter]; } - StructuredBuffer GetSearch_counter() { return ResourceDescriptorHeap[search_counter]; } - RWStructuredBuffer GetLit_dispatch_data() { return ResourceDescriptorHeap[lit_dispatch_data]; } - RWStructuredBuffer GetDark_dispatch_data() { return ResourceDescriptorHeap[dark_dispatch_data]; } - RWStructuredBuffer GetSearch_dispatch_data() { return ResourceDescriptorHeap[search_dispatch_data]; } -}; \ No newline at end of file diff --git a/workdir/shaders/autogen/tables/VSMSearchVerdictInitDispatch.h b/workdir/shaders/autogen/tables/VSMSearchVerdictInitDispatch.h deleted file mode 100644 index 8a7089f2b..000000000 --- a/workdir/shaders/autogen/tables/VSMSearchVerdictInitDispatch.h +++ /dev/null @@ -1,20 +0,0 @@ -// ============================================================================ -// THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MANUALLY EDIT -// ============================================================================ -// Generated by SigParser from .sig files in sources/SIGParser/sigs/ -// Changes will be lost on next generation. Edit the .sig source files instead. -// ============================================================================ -#pragma once -#include "sig_hlsl.hlsl" -#include "DispatchArguments.h" -struct VSMSearchVerdictInitDispatch -{ - uint confirmed_lit_counter; // StructuredBuffer - uint blur_counter; // StructuredBuffer - uint confirmed_lit_dispatch_data; // RWStructuredBuffer - uint blur_dispatch_data; // RWStructuredBuffer - StructuredBuffer GetConfirmed_lit_counter() { return ResourceDescriptorHeap[confirmed_lit_counter]; } - StructuredBuffer GetBlur_counter() { return ResourceDescriptorHeap[blur_counter]; } - RWStructuredBuffer GetConfirmed_lit_dispatch_data() { return ResourceDescriptorHeap[confirmed_lit_dispatch_data]; } - RWStructuredBuffer GetBlur_dispatch_data() { return ResourceDescriptorHeap[blur_dispatch_data]; } -}; \ No newline at end of file