88 lines
2.4 KiB
C
88 lines
2.4 KiB
C
|
#ifndef HGL_GRAPH_MATERIAL_COMPONENT_INCLUDE
|
|||
|
#define HGL_GRAPH_MATERIAL_COMPONENT_INCLUDE
|
|||
|
|
|||
|
#include<hgl/type/DataType.h>
|
|||
|
|
|||
|
#define BEGIN_MATERIAL_NAMESPACE namespace hgl{namespace graph{namespace material{
|
|||
|
#define END_MATERIAL_NAMESPACE }}}
|
|||
|
|
|||
|
BEGIN_MATERIAL_NAMESPACE
|
|||
|
enum class Component
|
|||
|
{
|
|||
|
ShadingModel=0,
|
|||
|
|
|||
|
Color,
|
|||
|
Opacity,
|
|||
|
Normal,
|
|||
|
|
|||
|
Metallic,
|
|||
|
Roughness,
|
|||
|
|
|||
|
Emissive,
|
|||
|
Refraction,
|
|||
|
|
|||
|
AO,
|
|||
|
SSS,
|
|||
|
Height,
|
|||
|
|
|||
|
RIM,
|
|||
|
ClearCoat,
|
|||
|
Anisotropy,
|
|||
|
|
|||
|
BEGIN_RANGE =ShadingModel,
|
|||
|
END_RANGE =Anisotropy,
|
|||
|
RANGE_SIZE =END_RANGE-BEGIN_RANGE+1,
|
|||
|
};//
|
|||
|
|
|||
|
enum class ComponentBit
|
|||
|
{
|
|||
|
#define MC_BIT_DEFINE(name) name=1<<(uint)Component::name
|
|||
|
MC_BIT_DEFINE(ShadingModel ),
|
|||
|
|
|||
|
MC_BIT_DEFINE(Color ),
|
|||
|
MC_BIT_DEFINE(Opacity ),
|
|||
|
MC_BIT_DEFINE(Normal ),
|
|||
|
|
|||
|
MC_BIT_DEFINE(Metallic ),
|
|||
|
MC_BIT_DEFINE(Roughness ),
|
|||
|
|
|||
|
MC_BIT_DEFINE(Emissive ),
|
|||
|
MC_BIT_DEFINE(Refraction ),
|
|||
|
|
|||
|
MC_BIT_DEFINE(AO ),
|
|||
|
MC_BIT_DEFINE(SSS ),
|
|||
|
MC_BIT_DEFINE(Height ),
|
|||
|
|
|||
|
MC_BIT_DEFINE(RIM ),
|
|||
|
MC_BIT_DEFINE(ClearCoat ),
|
|||
|
MC_BIT_DEFINE(Anisotropy ),
|
|||
|
#undef MC_BIT_DEFINE
|
|||
|
};//enum class ComponentBit
|
|||
|
|
|||
|
enum class ComponentDataType
|
|||
|
{
|
|||
|
Bool=0,
|
|||
|
Float,
|
|||
|
Int,
|
|||
|
Uint,
|
|||
|
};//
|
|||
|
|
|||
|
using ComponentBitsConfig=uint32;
|
|||
|
|
|||
|
constexpr ComponentBitsConfig MCC_PureColor =uint32(ComponentBit::Color);
|
|||
|
constexpr ComponentBitsConfig MCC_PureNormal =uint32(ComponentBit::Normal);
|
|||
|
constexpr ComponentBitsConfig MCC_ColorNormal =uint32(ComponentBit::Color)|uint32(ComponentBit::Normal);
|
|||
|
constexpr ComponentBitsConfig MCC_CNMR =uint32(ComponentBit::Color)|uint32(ComponentBit::Normal)|uint32(ComponentBit::Metallic)|uint32(ComponentBit::Roughness);
|
|||
|
|
|||
|
struct ComponentConfig
|
|||
|
{
|
|||
|
Component comp; ///<成份ID
|
|||
|
ComponentDataType type; ///<数据类型
|
|||
|
uint channels; ///<通道数
|
|||
|
bool LinearColorspace; ///<是要求线性颜色空间
|
|||
|
};
|
|||
|
|
|||
|
const ComponentConfig *GetConfig(const enum class Component c);
|
|||
|
END_MATERIAL_NAMESPACE
|
|||
|
#endif//HGL_GRAPH_MATERIAL_COMPONENT_INCLUDE
|