//-------------------------------------------------------------------------------------- // File: EffectStateBase11.h // // Direct3D 11 Effects States Header // // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // // http://go.microsoft.com/fwlink/p/?LinkId=271568 //-------------------------------------------------------------------------------------- #pragma once namespace D3DX11Effects { ////////////////////////////////////////////////////////////////////////// // Effect HLSL states and late resolve lists ////////////////////////////////////////////////////////////////////////// struct RValue { const char *m_pName; uint32_t m_Value; }; #define RVALUE_END() { nullptr, 0U } #define RVALUE_ENTRY(prefix, x) { #x, (uint32_t)prefix##x } enum ELhsType : int; struct LValue { const char *m_pName; // name of the LHS side of expression EBlockType m_BlockType; // type of block it can appear in D3D_SHADER_VARIABLE_TYPE m_Type; // data type allows uint32_t m_Cols; // number of [m_Type]'s required (1 for a scalar, 4 for a vector) uint32_t m_Indices; // max index allowable (if LHS is an array; otherwise this is 1) bool m_VectorScalar; // can be both vector and scalar (setting as a scalar sets all m_Indices values simultaneously) const RValue *m_pRValue; // pointer to table of allowable RHS "late resolve" values ELhsType m_LhsType; // ELHS_* enum value that corresponds to this entry uint32_t m_Offset; // offset into the given block type where this value should be written uint32_t m_Stride; // for vectors, byte stride between two consecutive values. if 0, m_Type's size is used }; #define LVALUE_END() { nullptr, D3D_SVT_UINT, 0, 0, 0, nullptr } extern const LValue g_lvGeneral[]; extern const uint32_t g_lvGeneralCount; } // end namespace D3DX11Effects