MCPcopy Create free account
hub / github.com/NazaraEngine/NazaraEngine / SetShader

Method SetShader

src/Nazara/Renderer/UberShaderPreprocessor.cpp:125–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123 }
124
125 void UberShaderPreprocessor::SetShader(ShaderStageType stage, const String& source, const String& shaderFlags, const String& requiredFlags)
126 {
127 CachedShader& shader = m_shaders[stage];
128 shader.present = true;
129 shader.source = source;
130
131 // On extrait les flags de la chaîne
132 std::vector<String> flags;
133 shaderFlags.Split(flags, ' ');
134
135 for (String& flag : flags)
136 {
137 auto it = m_flags.find(flag);
138 if (it == m_flags.end())
139 m_flags[flag] = 1U << m_flags.size();
140
141 auto it2 = shader.flags.find(flag);
142 if (it2 == shader.flags.end())
143 shader.flags[flag] = 1U << shader.flags.size();
144 }
145
146 // On construit les flags requis pour l'activation du shader
147 shader.requiredFlags = 0;
148
149 flags.clear();
150 requiredFlags.Split(flags, ' ');
151
152 for (String& flag : flags)
153 {
154 UInt32 flagVal;
155
156 auto it = m_flags.find(flag);
157 if (it == m_flags.end())
158 {
159 flagVal = 1U << m_flags.size();
160 m_flags[flag] = flagVal;
161 }
162 else
163 flagVal = it->second;
164
165 shader.requiredFlags |= flagVal;
166 }
167 }
168
169 bool UberShaderPreprocessor::SetShaderFromFile(ShaderStageType stage, const String& filePath, const String& shaderFlags, const String& requiredFlags)
170 {

Callers

nothing calls this directly

Calls 2

SplitMethod · 0.80
endMethod · 0.45

Tested by

no test coverage detected