MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / CompileShaders

Method CompileShaders

Source/Engine/ShadersCompilation/ShaderCompiler.cpp:149–238  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147}
148
149bool ShaderCompiler::CompileShaders()
150{
151 auto meta = _context->Meta;
152#if BUILD_DEBUG
153#define PROFILE_COMPILE_SHADER(s) ZoneTransientN(___tracy_scoped_zone, s.Name.Get(), true);
154#else
155#define PROFILE_COMPILE_SHADER(s)
156#endif
157
158 // Generate vertex shaders cache
159 for (int32 i = 0; i < meta->VS.Count(); i++)
160 {
161 auto& shader = meta->VS[i];
162 ASSERT(shader.GetStage() == ShaderStage::Vertex && (shader.Flags & ShaderFlags::Hidden) == (ShaderFlags)0);
163 PROFILE_COMPILE_SHADER(shader);
164 if (CompileShader(shader, &WriteCustomDataVS))
165 {
166 LOG(Error, "Failed to compile \'{0}\'", String(shader.Name));
167 return true;
168 }
169 }
170
171 // Generate hull shaders cache
172 for (int32 i = 0; i < meta->HS.Count(); i++)
173 {
174 auto& shader = meta->HS[i];
175 ASSERT(shader.GetStage() == ShaderStage::Hull && (shader.Flags & ShaderFlags::Hidden) == (ShaderFlags)0);
176 PROFILE_COMPILE_SHADER(shader);
177 if (CompileShader(shader, &WriteCustomDataHS))
178 {
179 LOG(Error, "Failed to compile \'{0}\'", String(shader.Name));
180 return true;
181 }
182 }
183
184 // Generate domain shaders cache
185 for (int32 i = 0; i < meta->DS.Count(); i++)
186 {
187 auto& shader = meta->DS[i];
188 ASSERT(shader.GetStage() == ShaderStage::Domain && (shader.Flags & ShaderFlags::Hidden) == (ShaderFlags)0);
189 PROFILE_COMPILE_SHADER(shader);
190 if (CompileShader(shader))
191 {
192 LOG(Error, "Failed to compile \'{0}\'", String(shader.Name));
193 return true;
194 }
195 }
196
197 // Generate geometry shaders cache
198 for (int32 i = 0; i < meta->GS.Count(); i++)
199 {
200 auto& shader = meta->GS[i];
201 ASSERT(shader.GetStage() == ShaderStage::Geometry && (shader.Flags & ShaderFlags::Hidden) == (ShaderFlags)0);
202 PROFILE_COMPILE_SHADER(shader);
203 if (CompileShader(shader))
204 {
205 LOG(Error, "Failed to compile \'{0}\'", String(shader.Name));
206 return true;

Callers

nothing calls this directly

Calls 3

StringFunction · 0.50
CountMethod · 0.45
GetStageMethod · 0.45

Tested by

no test coverage detected