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;
69 std::vector<MaterialTextureDefinition> textures;
71 std::vector<ConstantBufferDefinition> buffers;
74 enum class MaterialDefinitionFlags : uint32_t
80 ENABLE_ENUM_FLAGS(MaterialDefinitionFlags);
90 MaterialDefinitionFlags flags = MaterialDefinitionFlags::None;
92 std::vector<ShaderVariantRequirement> requirements;
94 std::unordered_map<std::string, std::string> options;
96 std::vector<ShaderVariantDefinition> variants;
98 size_t permutationIndex = 0;
99 std::string permutationName;
101 size_t enginePermutationMask = 0x1 | 0x2 | 0x4 | 0x8;
106 std::string inherits;
108 std::vector<MaterialDefinition> permutations;
110 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.