ULRE/inc/hgl/graph/shader/ShaderParam.h

95 lines
2.0 KiB
C
Raw Normal View History

2019-12-06 21:45:51 +08:00
#ifndef HGL_SHADER_PARAM_TYPE_INCLUDE
#define HGL_SHADER_PARAM_TYPE_INCLUDE
#define BEGIN_SHADER_NAMESPACE namespace hgl{namespace graph{namespace shader{
#undef END_SHADER_NAMESPACE }}}
BEGIN_SHADER_NAMESPACE
/**
*
*/
enum class ParamType
{
BOOL=1,
FLOAT,INT,UINT,MATRIX, //不区分1/2/3/4通道数量的类型
FLOAT_1,
FLOAT_2,
FLOAT_3,
FLOAT_4,
INT_1,
INT_2,
INT_3,
INT_4,
UINT_1,
UINT_2,
UINT_3,
UINT_4,
MAT3x3,
MAT3x4,
MAT4x4,
TEXTURE_1D,
TEXTURE_2D,
TEXTURE_3D,
TEXTURE_CUBE,
TEXTURE_1D_ARRAY,
TEXTURE_2D_ARRAY,
TEXTURE_CUBE_ARRAY,
FLOAT_1_STREAM,
FLOAT_2_STREAM,
FLOAT_3_STREAM,
FLOAT_4_STREAM,
INT_1_STREAM,
INT_2_STREAM,
INT_3_STREAM,
INT_4_STREAM,
UINT_1_STREAM,
UINT_2_STREAM,
UINT_3_STREAM,
UINT_4_STREAM,
ARRAY_1D, //阵列
ARRAY_2D, //2D阵列
UBO, //UBO name
NODE, //另一个节点,只可做为输入参数
BEGIN_RANGE =FLOAT_1,
END_RANGE =NODE,
RANGE_SIZE =(END_RAGE-BEGIN_RANGE+1)
};//enum class ParamType
/**
*
*/
struct Param
{
UTF8String name; //参数名称
ParamType type; //类型
};//struct Param
/**
*
*/
template<typename T>
struct ParamNumber:public Param
{
bool is_const;
T min_value;
T max_value;
};//struct ParamNumber:public Param
#define SHADER_INPUT_PARAM(name,type) input_params.Add(new Param(#name,ParamType::type);
#define SHADER_OUTPUT_PARAM(name,type) output_params.Add(new Param(#name,ParamType::type);
END_SHADER_NAMESPACE
#endif//HGL_SHADER_PARAM_TYPE_INCLUDE