Cogs.Core
ResourceFlags.cpp
1#include "ResourceFlags.h"
2
3#include "Rendering/DataFormat.h"
4#include "Rendering/TextureData.h"
5#include "Serialization/AssetWriteFlags.h"
6
7#include "ResourceBase.h"
8#include "Material.h"
9#include "Types.h"
10
11#include "Renderer/Tasks/RenderListTask.h"
12#include "Renderer/Tasks/FilterListTask.h"
13
14template<> Cogs::StringView getName<Cogs::Core::ResourceTypes>() { return "ResourceTypes"; }
15template<> Cogs::StringView getName<Cogs::TextureFormat>() { return "TextureFormat"; }
16template<> Cogs::StringView getName<Cogs::ResourceDimensions>() { return "ResourceDimensions"; }
17
18using namespace Cogs::Reflection;
19
20void Cogs::Core::registerResourceFlagTypes()
21{
22 static constexpr EnumeratorDef textureFormatEnums[] = {
23 { "Unknown", TextureFormat::Unknown },
24 { "R8_UNORM", TextureFormat::R8_UNORM },
25 { "R8G8_UNORM", TextureFormat::R8G8_UNORM },
26 { "R8G8B8_UNORM", TextureFormat::R8G8B8_UNORM },
27 { "R8G8B8A8_UNORM", TextureFormat::R8G8B8A8_UNORM },
28 { "R16_UNORM", TextureFormat::R16_UNORM },
29 { "R16G16_UNORM", TextureFormat::R16G16_UNORM },
30 { "R16G16B16_UNORM", TextureFormat::R16G16B16_UNORM },
31 { "R16G16B16A16_UNORM", TextureFormat::R16G16B16A16_UNORM },
32 { "R8_SNORM", TextureFormat::R8_SNORM },
33 { "R8G8_SNORM", TextureFormat::R8G8_SNORM },
34 { "R8G8B8_SNORM", TextureFormat::R8G8B8_SNORM },
35 { "R8G8B8A8_SNORM", TextureFormat::R8G8B8A8_SNORM },
36 { "R16_SNORM", TextureFormat::R16_SNORM },
37 { "R16G16_SNORM", TextureFormat::R16G16_SNORM },
38 { "R16G16B16_SNORM", TextureFormat::R16G16B16_SNORM },
39 { "R16G16B16A16_SNORM", TextureFormat::R16G16B16A16_SNORM },
40 { "R8_UINT", TextureFormat::R8_UINT },
41 { "R8G8_UINT", TextureFormat::R8G8_UINT },
42 { "R8G8B8_UINT", TextureFormat::R8G8B8_UINT },
43 { "R8G8B8A8_UINT", TextureFormat::R8G8B8A8_UINT },
44 { "R16_UINT", TextureFormat::R16_UINT },
45 { "R16G16_UINT", TextureFormat::R16G16_UINT },
46 { "R16G16B16_UINT", TextureFormat::R16G16B16_UINT },
47 { "R16G16B16A16_UINT", TextureFormat::R16G16B16A16_UINT },
48 { "R32_UINT", TextureFormat::R32_UINT },
49 { "R32G32_UINT", TextureFormat::R32G32_UINT },
50 { "R32G32B32_UINT", TextureFormat::R32G32B32_UINT },
51 { "R32G32B32A32_UINT", TextureFormat::R32G32B32A32_UINT },
52 { "R8_SINT", TextureFormat::R8_SINT },
53 { "R8G8_SINT", TextureFormat::R8G8_SINT },
54 { "R8G8B8_SINT", TextureFormat::R8G8B8_SINT },
55 { "R8G8B8A8_SINT", TextureFormat::R8G8B8A8_SINT },
56 { "R16_SINT", TextureFormat::R16_SINT },
57 { "R16G16_SINT", TextureFormat::R16G16_SINT },
58 { "R16G16B16_SINT", TextureFormat::R16G16B16_SINT },
59 { "R16G16B16A16_SINT", TextureFormat::R16G16B16A16_SINT },
60 { "R32_SINT", TextureFormat::R32_SINT },
61 { "R32G32_SINT", TextureFormat::R32G32_SINT },
62 { "R32G32B32_SINT", TextureFormat::R32G32B32_SINT },
63 { "R32G32B32A32_SINT", TextureFormat::R32G32B32A32_SINT },
64 { "R16_FLOAT", TextureFormat::R16_FLOAT },
65 { "R16G16_FLOAT", TextureFormat::R16G16_FLOAT },
66 { "R16G16B16_FLOAT", TextureFormat::R16G16B16_FLOAT },
67 { "R16G16B16A16_FLOAT", TextureFormat::R16G16B16A16_FLOAT },
68 { "R32_FLOAT", TextureFormat::R32_FLOAT },
69 { "R32G32_FLOAT", TextureFormat::R32G32_FLOAT },
70 { "R32G32B32_FLOAT", TextureFormat::R32G32B32_FLOAT },
71 { "R32G32B32A32_FLOAT", TextureFormat::R32G32B32A32_FLOAT },
72 { "D16_UNORM", TextureFormat::D16_UNORM },
73 { "D24_UNORM", TextureFormat::D24_UNORM },
74 { "D24S8_UNORM", TextureFormat::D24S8_UNORM },
75 { "D32_FLOAT", TextureFormat::D32_FLOAT },
76 { "R32_TYPELESS", TextureFormat::R32_TYPELESS },
77 { "R16_TYPELESS", TextureFormat::R16_TYPELESS },
78 { "R8T", TextureFormat::R8T },
79 { "R8G8T", TextureFormat::R8G8T },
80 { "R8G8B8T", TextureFormat::R8G8B8T },
81 { "R8G8B8A8T", TextureFormat::R8G8B8A8T },
82 { "B8G8R8", TextureFormat::B8G8R8 },
83 { "B8G8R8A8", TextureFormat::B8G8R8A8 },
84 { "A8_UNORM", TextureFormat::A8_UNORM },
85 { "BC1_TYPELESS", TextureFormat::BC1_TYPELESS },
86 { "BC1_UNORM", TextureFormat::BC1_UNORM },
87 { "BC1_UNORM_SRGB", TextureFormat::BC1_UNORM_SRGB },
88 { "BC2_TYPELESS", TextureFormat::BC2_TYPELESS },
89 { "BC2_UNORM", TextureFormat::BC2_UNORM },
90 { "BC2_UNORM_SRGB", TextureFormat::BC2_UNORM_SRGB },
91 { "BC3_TYPELESS", TextureFormat::BC3_TYPELESS },
92 { "BC3_UNORM", TextureFormat::BC3_UNORM },
93 { "BC3_UNORM_SRGB", TextureFormat::BC3_UNORM_SRGB },
94 { "BC4_TYPELESS", TextureFormat::BC4_TYPELESS },
95 { "BC4_UNORM", TextureFormat::BC4_UNORM },
96 { "BC4_SNORM", TextureFormat::BC4_SNORM },
97 { "BC5_TYPELESS", TextureFormat::BC5_TYPELESS },
98 { "BC5_UNORM", TextureFormat::BC5_UNORM },
99 { "BC5_SNORM", TextureFormat::BC5_SNORM },
100 { "BC6H_SIGNED_FLOAT_RGB", TextureFormat::BC6H_SIGNED_FLOAT_RGB },
101 { "BC6H_UNSIGNED_FLOAT_RGB", TextureFormat::BC6H_UNSIGNED_FLOAT_RGB },
102 { "BC7_UNORM_RGBA", TextureFormat::BC7_UNORM_RGBA },
103 { "BC7_UNORM_SRGBA", TextureFormat::BC7_UNORM_SRGBA },
104 { "PVRTC1_2BPP_UNORM_RGB", TextureFormat::PVRTC1_2BPP_UNORM_RGB },
105 { "PVRTC1_4BPP_UNORM_RGB", TextureFormat::PVRTC1_4BPP_UNORM_RGB },
106 { "PVRTC1_2BPP_UNORM_RGBA", TextureFormat::PVRTC1_2BPP_UNORM_RGBA },
107 { "PVRTC1_4BPP_UNORM_RGBA", TextureFormat::PVRTC1_4BPP_UNORM_RGBA },
108 { "EAC_BLOCK8_UNSIGNED_FLOAT_R", TextureFormat::EAC_BLOCK8_UNSIGNED_FLOAT_R },
109 { "EAC_BLOCK8_SIGNED_FLOAT_R", TextureFormat::EAC_BLOCK8_SIGNED_FLOAT_R },
110 { "EAC_BLOCK16_UNSIGNED_FLOAT_RG", TextureFormat::EAC_BLOCK16_UNSIGNED_FLOAT_RG },
111 { "EAC_BLOCK16_SIGNED_FLOAT_RG", TextureFormat::EAC_BLOCK16_SIGNED_FLOAT_RG },
112 { "ETC2_BLOCK8_UNORM_RGB", TextureFormat::ETC2_BLOCK8_UNORM_RGB },
113 { "ETC2_BLOCK8_UNORM_SRGB", TextureFormat::ETC2_BLOCK8_UNORM_SRGB },
114 { "ETC2_BLOCK16_UNORM_RGBA", TextureFormat::ETC2_BLOCK16_UNORM_RGBA },
115 { "ETC2_BLOCK16_UNORM_SRGBA", TextureFormat::ETC2_BLOCK16_UNORM_SRGBA },
116 { "ASTC_4x4_UNORM_RGBA", TextureFormat::ASTC_4x4_UNORM_RGBA },
117 { "ASTC_5x4_UNORM_RGBA", TextureFormat::ASTC_5x4_UNORM_RGBA },
118 { "ASTC_5x5_UNORM_RGBA", TextureFormat::ASTC_5x5_UNORM_RGBA },
119 { "ASTC_6x5_UNORM_RGBA", TextureFormat::ASTC_6x5_UNORM_RGBA },
120 { "ASTC_6x6_UNORM_RGBA", TextureFormat::ASTC_6x6_UNORM_RGBA },
121 { "ASTC_8x5_UNORM_RGBA", TextureFormat::ASTC_8x5_UNORM_RGBA },
122 { "ASTC_8x6_UNORM_RGBA", TextureFormat::ASTC_8x6_UNORM_RGBA },
123 { "ASTC_8x8_UNORM_RGBA", TextureFormat::ASTC_8x8_UNORM_RGBA },
124 { "ASTC_10x5_UNORM_RGBA", TextureFormat::ASTC_10x5_UNORM_RGBA },
125 { "ASTC_10x6_UNORM_RGBA", TextureFormat::ASTC_10x6_UNORM_RGBA },
126 { "ASTC_10x8_UNORM_RGBA", TextureFormat::ASTC_10x8_UNORM_RGBA },
127 { "ASTC_10x10_UNORM_RGBA", TextureFormat::ASTC_10x10_UNORM_RGBA },
128 { "ASTC_12x10_UNORM_RGBA", TextureFormat::ASTC_12x10_UNORM_RGBA },
129 { "ASTC_12x12_UNORM_RGBA", TextureFormat::ASTC_12x12_UNORM_RGBA },
130 { "ASTC_4x4_UNORM_SRGBA", TextureFormat::ASTC_4x4_UNORM_SRGBA },
131 { "ASTC_5x4_UNORM_SRGBA", TextureFormat::ASTC_5x4_UNORM_SRGBA },
132 { "ASTC_5x5_UNORM_SRGBA", TextureFormat::ASTC_5x5_UNORM_SRGBA },
133 { "ASTC_6x5_UNORM_SRGBA", TextureFormat::ASTC_6x5_UNORM_SRGBA },
134 { "ASTC_6x6_UNORM_SRGBA", TextureFormat::ASTC_6x6_UNORM_SRGBA },
135 { "ASTC_8x5_UNORM_SRGBA", TextureFormat::ASTC_8x5_UNORM_SRGBA },
136 { "ASTC_8x6_UNORM_SRGBA", TextureFormat::ASTC_8x6_UNORM_SRGBA },
137 { "ASTC_8x8_UNORM_SRGBA", TextureFormat::ASTC_8x8_UNORM_SRGBA },
138 { "ASTC_10x5_UNORM_SRGBA", TextureFormat::ASTC_10x5_UNORM_SRGBA },
139 { "ASTC_10x6_UNORM_SRGBA", TextureFormat::ASTC_10x6_UNORM_SRGBA },
140 { "ASTC_10x8_UNORM_SRGBA", TextureFormat::ASTC_10x8_UNORM_SRGBA },
141 { "ASTC_10x10_UNORM_SRGBA", TextureFormat::ASTC_10x10_UNORM_SRGBA },
142 { "ASTC_12x10_UNORM_SRGBA", TextureFormat::ASTC_12x10_UNORM_SRGBA },
143 { "ASTC_12x12_UNORM_SRGBA", TextureFormat::ASTC_12x12_UNORM_SRGBA },
144 { "R8G8B8_UNORM_SRGB", TextureFormat::R8G8B8_UNORM_SRGB },
145 { "R8G8B8A8_UNORM_SRGB", TextureFormat::R8G8B8A8_UNORM_SRGB },
146 { "B8G8R8A8_UNORM_SRGB", TextureFormat::B8G8R8A8_UNORM_SRGB },
147 { "R10G10B10A2_TYPELESS", TextureFormat::R10G10B10A2_TYPELESS },
148 { "R10G10B10A2_UNORM", TextureFormat::R10G10B10A2_UNORM },
149 { "R10G10B10A2_UINT", TextureFormat::R10G10B10A2_UINT },
150 { "R11G11B10_FLOAT", TextureFormat::R11G11B10_FLOAT },
151 { "R5G6B5_UNORM", TextureFormat::R5G6B5_UNORM },
152 { "R5G5B5A1_UNORM", TextureFormat::R5G5B5A1_UNORM },
153 { "R4G4B4A4_UNORM", TextureFormat::R4G4B4A4_UNORM },
154 { "R9G9B9E5_FLOAT", TextureFormat::R9G9B9E5_FLOAT },
155 { "MAT4X4_FLOAT", TextureFormat::MAT4X4_FLOAT }
156 };
157
158 TypeDatabase::createType<TextureFormat>().setEnumerators(textureFormatEnums);
159
160 static constexpr EnumeratorDef resourceDimensionsEnums[] = {
161 { "Unknown", ResourceDimensions::Unknown },
162 { "Buffer", ResourceDimensions::Buffer },
163 { "Texture1D", ResourceDimensions::Texture1D },
164 { "Texture1DArray", ResourceDimensions::Texture1DArray },
165 { "Texture2D", ResourceDimensions::Texture2D },
166 { "Texture2DArray", ResourceDimensions::Texture2DArray },
167 { "Texture2DMS", ResourceDimensions::Texture2DMS },
168 { "Texture2DMSArray", ResourceDimensions::Texture2DMSArray },
169 { "Texture3D", ResourceDimensions::Texture3D },
170 { "Texture3DArray", ResourceDimensions::Texture3DArray },
171 { "TextureCube", ResourceDimensions::TextureCube },
172 { "TextureCubeArray", ResourceDimensions::TextureCubeArray },
173 { "RenderBuffer", ResourceDimensions::RenderBuffer }
174 };
175
176 TypeDatabase::createType<ResourceDimensions>().setEnumerators(resourceDimensionsEnums);
177
178 static constexpr EnumeratorDef loadEnums[] = {
179 { "None", ResourceLoadFlags::None },
180 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
181 { "Reload", ResourceLoadFlags::Reload },
182 { "AutoReload", ResourceLoadFlags::AutoReload },
183 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
184 { "ForceUnique", ResourceLoadFlags::ForceUnique },
185 { "DoNotCache", ResourceLoadFlags::DoNotCache }
186 };
187
188 TypeDatabase::createType<ResourceLoadFlags>().setEnumerators(loadEnums).
189 setEnumFlags();
190
191 static constexpr EnumeratorDef textureLoadEnums[] = {
192 { "None", ResourceLoadFlags::None },
193 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
194 { "Reload", ResourceLoadFlags::Reload },
195 { "AutoReload", ResourceLoadFlags::AutoReload },
196 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
197 { "ForceUnique", ResourceLoadFlags::ForceUnique },
198 { "DoNotCache", ResourceLoadFlags::DoNotCache },
199
200 // Custom TextureLoadFlags
201 { "Flip", TextureLoadFlags::Flip },
202 { "LinearColorSpace", TextureLoadFlags::LinearColorSpace },
203 { "NoMipMaps", TextureLoadFlags::NoMipMaps },
204 { "NoDelete", TextureLoadFlags::NoDelete },
205 };
206
207 TypeDatabase::createType<TextureLoadFlags>().setEnumerators(textureLoadEnums).
208 setEnumFlags();
209
210 static constexpr EnumeratorDef modelLoadEnums[] = {
211 { "None", ResourceLoadFlags::None },
212 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
213 { "Reload", ResourceLoadFlags::Reload },
214 { "AutoReload", ResourceLoadFlags::AutoReload },
215 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
216 { "ForceUnique", ResourceLoadFlags::ForceUnique },
217 { "DoNotCache", ResourceLoadFlags::DoNotCache },
218
219 // Custom ModelLoadFlags
220 { "NeedsTangents", ModelLoadFlags::NeedsTangents },
221 { "AutomaticTransparency", ModelLoadFlags::AutomaticTransparency },
222 { "ForceTwoSidedMaterial", ModelLoadFlags::ForceTwoSidedMaterial },
223 { "DisableOptimization", ModelLoadFlags::DisableOptimization },
224 { "SkipMaterials", ModelLoadFlags::SkipMaterials },
225 { "NoFlipTexcoords", ModelLoadFlags::NoFlipTexcoords },
226
227 { "CustomExtensionFlag", ModelLoadFlags::CustomExtensionFlag },
228 };
229
230 TypeDatabase::createType<ModelLoadFlags>().setEnumerators(modelLoadEnums).
231 setEnumFlags();
232
233 static constexpr EnumeratorDef assetLoadEnums[] = {
234 { "None", ResourceLoadFlags::None },
235 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
236 { "Reload", ResourceLoadFlags::Reload },
237 { "AutoReload", ResourceLoadFlags::AutoReload },
238 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
239 { "ForceUnique", ResourceLoadFlags::ForceUnique },
240 { "DoNotCache", ResourceLoadFlags::DoNotCache },
241
242 // Custom AssetLoadFlags
243 { "ClearScene", AssetLoadFlags::ClearScene },
244 { "NoDefault", AssetLoadFlags::NoDefault },
245 };
246
247 TypeDatabase::createType<AssetLoadFlags>().setEnumerators(assetLoadEnums).
248 setEnumFlags();
249
250 static constexpr EnumeratorDef assetWriteEnums[] = {
251 // AssetWriteFlags
252 { "None", AssetWriteFlags::None },
253 { "Geometry", AssetWriteFlags::Geometry },
254 { "PrettyPrint", AssetWriteFlags::PrettyPrint },
255 { "Strip", AssetWriteFlags::Strip },
256 { "Compress", AssetWriteFlags::Compress },
257 { "Hierarchy", AssetWriteFlags::Hierarchy }
258 };
259
260 TypeDatabase::createType<AssetWriteFlags>().setEnumerators(assetWriteEnums).
261 setEnumFlags();
262
263 static constexpr EnumeratorDef resourceTypeEnums[] = {
264 { "Unknown", ResourceTypes::Unknown },
265 { "Asset", ResourceTypes::Asset },
266 { "Model", ResourceTypes::Model },
267 { "Texture", ResourceTypes::Texture },
268 { "Effect", ResourceTypes::Effect },
269 { "Material", ResourceTypes::Material },
270 { "MaterialInstance", ResourceTypes::MaterialInstance },
271 { "Mesh", ResourceTypes::Mesh },
272 { "Buffer", ResourceTypes::Buffer },
273 { "Font", ResourceTypes::Font },
274 { "Gui", ResourceTypes::Gui },
275 };
276
277 TypeDatabase::createType<ResourceTypes>().setEnumerators(resourceTypeEnums);
278
279 static constexpr EnumeratorDef cullModeEnums[] = {
280 { "None", CullMode::None },
281 { "Back", CullMode::Back },
282 { "Front", CullMode::Front },
283 };
284
285 TypeDatabase::createType<CullMode>().setEnumerators(cullModeEnums);
286
287 static constexpr EnumeratorDef blendModeEnums[] = {
288 { "Blend", BlendMode::Blend },
289 { "Add", BlendMode::Add },
290 { "PremultipliedBlend", BlendMode::PremultipliedBlend },
291 { "AlphaToCoverage", BlendMode::AlphaToCoverage },
292 { "None", BlendMode::None },
293 { "Zero", BlendMode::Zero },
294 { "One_One_Zero_InverseSourceAlpha", BlendMode::One_One_Zero_InverseSourceAlpha },
295 { "InverseSourceAlpha_SourceAlpha", BlendMode::InverseSourceAlpha_SourceAlpha },
296 { "DestinationAlpha_InverseDestinationAlpha", BlendMode::DestinationAlpha_InverseDestinationAlpha },
297 };
298
299 TypeDatabase::createType<BlendMode>().setEnumerators(blendModeEnums);
300
301 static constexpr EnumeratorDef transparencyModeEnums[] = {
302 { "None", TransparencyMode::None },
303 { "Off", TransparencyMode::Off },
304 { "Regular", TransparencyMode::Regular },
305 { "On", TransparencyMode::On },
306 { "Auto", TransparencyMode::Auto },
307 { "Alpha", TransparencyMode::Alpha },
308 };
309
310 TypeDatabase::createType<TransparencyMode>().setEnumerators(transparencyModeEnums);
311
312 static constexpr EnumeratorDef primitiveTypes[] = {
313 { "TriangleList", PrimitiveType::TriangleList },
314 { "TriangleStrip", PrimitiveType::TriangleStrip },
315 { "LineList", PrimitiveType::LineList },
316 { "LineStrip", PrimitiveType::LineStrip },
317 { "PointList", PrimitiveType::PointList },
318 { "TriangleListAdjacency", PrimitiveType::TriangleListAdjacency },
319 { "TriangleStripAdjacency", PrimitiveType::TriangleStripAdjacency },
320 { "LineListAdjacency", PrimitiveType::LineListAdjacency },
321 { "LineStripAdjacency", PrimitiveType::LineStripAdjacency },
322
323 { "ControlPoint1PatchList", PrimitiveType::ControlPoint1PatchList },
324 { "ControlPoint2PatchList", PrimitiveType::ControlPoint2PatchList },
325 { "ControlPoint3PatchList", PrimitiveType::ControlPoint3PatchList },
326 { "ControlPoint4PatchList", PrimitiveType::ControlPoint4PatchList },
327 };
328
329 TypeDatabase::createType<PrimitiveType>().setEnumerators(primitiveTypes);
330
331 static constexpr EnumeratorDef changeFlagsEnums[] = {
332 { "None", StateChangeFlags::ChangeNone },
333 { "Transform", StateChangeFlags::ChangeTransform },
334 { "Mesh", StateChangeFlags::ChangeMesh },
335 { "MaterialInstance", StateChangeFlags::ChangeMaterialInstance },
336 { "MaterialVariant", StateChangeFlags::ChangeMaterialVariant },
337 { "RasterizerState", StateChangeFlags::ChangeRasterizerState },
338 { "BlendState", StateChangeFlags::ChangeBlendState },
339 { "DepthStencilState", StateChangeFlags::ChangeDepthStencilState },
340 { "RenderLayer", StateChangeFlags::ChangeLayer },
341 { "Viewport", StateChangeFlags::ChangeViewport },
342 { "ViewportData", StateChangeFlags::ChangeViewportData },
343 { "All", StateChangeFlags::ChangeAll },
344 };
345
346 TypeDatabase::createType<StateChangeFlags>().setEnumerators(changeFlagsEnums).
347 setEnumFlags();
348
349 static constexpr EnumeratorDef bucketMaskEnums[] = {
350 { "None", BucketMask::None },
351 { "All", BucketMask::All },
352 { "BackDrop", BucketMask::BackDrop },
353 { "Transparent", BucketMask::Transparent },
354 { "Solid", BucketMask::Solid },
355 { "Opaque", BucketMask::Opaque },
356 { "Annotation", BucketMask::Annotation },
357 { "Overlay", BucketMask::Overlay },
358 { "Custom", BucketMask::Custom },
359 };
360
361 TypeDatabase::createType<BucketMask>().setEnumerators(bucketMaskEnums);
362
363 static constexpr EnumeratorDef renderTaskFlagsEnums[] = {
364 { "None", RenderTaskFlags::None },
365 { "Persistent", RenderTaskFlags::Persistent },
366 { "Static", RenderTaskFlags::Static },
367 };
368
369 TypeDatabase::createType<RenderTaskFlags::ERenderTaskFlags>().setEnumerators(renderTaskFlagsEnums).
370 setEnumFlags();
371
372 static constexpr EnumeratorDef sortFlagsEnums[] = {
373 { "None", SortFlags::None },
374 { "Default", SortFlags::Default },
375 { "Depth", SortFlags::Depth },
376 { "DrawOrder", SortFlags::DrawOrder },
377 { "DrawOrderAndDepth", SortFlags::DrawOrderAndDepth },
378 };
379
380 TypeDatabase::createType<SortFlags>().setEnumerators(sortFlagsEnums).
381 setEnumFlags();
382
383 static constexpr EnumeratorDef depthModeEnums[] = {
384 { "Default", DepthMode::Default },
385 { "NoWrite", DepthMode::NoWrite },
386 { "AlwaysWrite", DepthMode::AlwaysWrite },
387 { "Disabled", DepthMode::Disabled },
388 };
389
390 TypeDatabase::createType<DepthMode>().setEnumerators(depthModeEnums);
391
392 static constexpr EnumeratorDef materialFlagsEnums[] = {
393 { "None", MaterialFlags::None },
394 { "Default", MaterialFlags::Default },
395 { "MasterTransparency", MaterialFlags::MasterTransparency },
396 { "Backdrop", MaterialFlags::Backdrop },
397 { "OverrideColor", MaterialFlags::OverrideColor },
398 { "OverrideAlpha", MaterialFlags::OverrideAlpha },
399 { "OverrideTextures", MaterialFlags::OverrideTextures },
400 { "OverrideProperties", MaterialFlags::OverrideProperties },
401 { "Override", MaterialFlags::Override },
402 { "Sprite", MaterialFlags::Sprite },
403 { "CustomBucket", MaterialFlags::CustomBucket },
404 };
405
406 TypeDatabase::createType<MaterialFlags::EMaterialFlags>().setEnumerators(materialFlagsEnums).
407 setEnumFlags();
408}
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:50
Contains reflection support.
Definition: Component.h:11