Cogs.Core
RenderPipelineDefinition.h
1#pragma once
2
3#include "Renderer/RenderResource.h"
4#include "Utilities/Parsing.h"
5
6#include "Foundation/StringView.h"
7
8#include <vector>
9
10namespace Cogs
11{
12 namespace Core
13 {
15 {
16 std::string key;
17 std::string value;
18 std::vector<StringParameter> values;
19 };
20
22 {
23 std::string name;
24 std::string alias;
25
26 RenderResourceType type = RenderResourceType::Unknown;
27
28 std::vector<ParsedValue> parameters;
29
30 std::vector<std::string> textures;
31
32 std::string condition;
33
34 const ParsedValue* getParameter(const StringView& key) const
35 {
36 for (auto& p : parameters) {
37 if (key == p.key) {
38 return &p;
39 }
40 }
41
42 return nullptr;
43 }
44
45 const ParsedValue * getParameter(const StringView & key, const StringView & /*fallback*/) const
46 {
47 return getParameter(key);
48 }
49
50 const ParsedValue * getParameter(const StringView & key, const char * fallback) const
51 {
52 return getParameter(key, StringView(fallback));
53 }
54
55 bool getParameter(const StringView & key, bool fallback) const
56 {
57 auto p = getParameter(key, "");
58
59 return (p && p->type == ParsedDataType::Bool) ? p->boolValue : fallback;
60 }
61
62 int getParameter(const StringView & key, int fallback) const
63 {
64 auto p = getParameter(key, "");
65
66 return (p && p->type == ParsedDataType::Int) ? p->intValue : fallback;
67 }
68 };
69
71 {
72 RenderTaskSlot(const std::string & key, const std::string & value) : key(key), value(value) {}
73 RenderTaskSlot(const std::string & value) : value(value) {}
74
75 std::string key;
76 std::string value;
77 };
78
80 {
81 std::string name;
82
83 std::string type;
84
85 std::vector<RenderTaskSlot> inputs;
86 std::vector<RenderTaskSlot> outputs;
87
88 std::vector<std::string> dependencies;
89
90 std::vector<ParsedValue> parameters;
91 std::vector<StringParameter> options;
92
93 std::string condition;
94 };
95
97 {
98 std::string key;
99 std::vector<std::string> values;
100
101 std::string setting;
102 };
103
105 {
106 std::string name;
107 std::vector<ParsedOption> options;
108
109 std::vector<RenderResourceDefinition> resources;
110 std::vector<RenderTaskDefinition> tasks;
111
112 std::vector<StringParameter> imports;
113 std::vector<RenderPipelineDefinition> generators;
114
115 std::vector<RenderTaskSlot> inputs;
116 std::vector<RenderTaskSlot> outputs;
117
118 std::vector<ParsedValue> useVariables;
119 std::vector<ParsedValue> setVariables;
120 std::vector<ParsedValue> useComponentFields;
121 };
122 }
123}
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:24
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
Stores the parsed output of a key/value pair.
Definition: Parsing.h:32