7#include <unordered_map>
9#include "MaterialTypes.h"
10#include "EffectDefinition.h"
11#include "MaterialProperty.h"
13#include "Resources/VariantDefinition.h"
27 glm::vec2 float2Value;
28 glm::vec3 float3Value;
29 glm::vec4 float4Value;
30 glm::mat4 float4x4Value;
32 glm::uvec2 uint2Value;
33 glm::uvec3 uint3Value;
34 glm::uvec4 uint4Value;
48 std::vector<ConstantBufferVariableDefinition> values;
50 bool isPerInstance =
false;
57 MaterialTypePrecision precision = MaterialTypePrecision::Default;
71 std::vector<MaterialTextureDefinition> textures;
73 std::vector<ConstantBufferDefinition> buffers;
76 enum class MaterialDefinitionFlags : uint32_t
82 ENABLE_ENUM_FLAGS(MaterialDefinitionFlags);
92 MaterialDefinitionFlags flags = MaterialDefinitionFlags::None;
94 std::vector<ShaderVariantRequirement> requirements;
96 std::unordered_map<std::string, std::string> options;
98 std::vector<ShaderVariantDefinition> variants;
100 size_t permutationIndex = 0;
101 std::string permutationName;
103 size_t enginePermutationMask = 0x1 | 0x2 | 0x4 | 0x8;
108 std::string inherits;
110 std::vector<MaterialDefinition> permutations;
112 bool isTemplate()
const {
return (flags & MaterialDefinitionFlags::IsTemplate) != 0; }
TextureDimensions
Texture dimensions.
MaterialDataType
Defines available data types for material properties.
Contains all Cogs related functionality.
Defines a loadable effect.