// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Config.h"
#include "Engine/Core/Enums.h"
#include "Engine/Graphics/Enums.h"
#define INPUT_LAYOUT_ELEMENT_ALIGN 0xffffffff
#define INPUT_LAYOUT_ELEMENT_PER_VERTEX_DATA 0
#define INPUT_LAYOUT_ELEMENT_PER_INSTANCE_DATA 1
///
/// Maximum amount of input elements for vertex shader programs
///
#define VERTEX_SHADER_MAX_INPUT_ELEMENTS 16
///
/// Maximum allowed amount of shader program permutations
///
#define SHADER_PERMUTATIONS_MAX_COUNT 16
///
/// Maximum allowed amount of parameters for permutation
///
#define SHADER_PERMUTATIONS_MAX_PARAMS_COUNT 4
///
/// Maximum allowed amount of constant buffers that can be binded to the pipeline (maximum slot index is MAX_CONSTANT_BUFFER_SLOTS-1)
///
#define MAX_CONSTANT_BUFFER_SLOTS 4
///
/// Shader program type
///
DECLARE_ENUM_EX_6(ShaderStage, int32, 0, Vertex, Hull, Domain, Geometry, Pixel, Compute);
///
/// Shader macro definition structure
///
struct ShaderMacro
{
///
/// Macro name
///
const char* Name;
///
/// Macro value
///
const char* Definition;
};