2019-12-10 21:52:10 +08:00
|
|
|
|
#ifndef HGL_GRAPH_SHADER_NODE_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_SHADER_NODE_INCLUDE
|
|
|
|
|
|
|
|
|
|
#include<hgl/type/BaseString.h>
|
|
|
|
|
#include<hgl/type/List.h>
|
2019-12-13 11:20:08 +08:00
|
|
|
|
#include<hgl/graph/shader/param/in.h>
|
|
|
|
|
#include<hgl/graph/shader/param/out.h>
|
2019-12-10 21:52:10 +08:00
|
|
|
|
|
|
|
|
|
BEGIN_SHADER_NODE_NAMESPACE
|
2019-12-13 11:20:08 +08:00
|
|
|
|
|
|
|
|
|
#define SHADER_INPUT_PARAM(mj,name,type) input_params.Add(new SHADER_PARAM_NAMESPACE::InputParam(mj,#name,SHADER_PARAM_NAMESPACE::ParamType::type));
|
|
|
|
|
#define SHADER_OUTPUT_PARAM(name,type) output_params.Add(new SHADER_PARAM_NAMESPACE::Param(#name,SHADER_PARAM_NAMESPACE::ParamType::type));
|
|
|
|
|
|
|
|
|
|
using InputParamList=ObjectList<param::InputParam>;
|
|
|
|
|
using OutputParamList=ObjectList<param::OutputParam>;
|
|
|
|
|
|
2019-12-10 22:12:09 +08:00
|
|
|
|
/**
|
|
|
|
|
* Shader 节点是所有Shader的基础,它可以是一个简单的计算,也可以是一段复杂的函数
|
|
|
|
|
*/
|
|
|
|
|
class Node
|
|
|
|
|
{
|
2019-12-13 11:20:08 +08:00
|
|
|
|
UTF8String type_name; ///<节点类型本身的名称
|
2019-12-12 22:25:40 +08:00
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
2019-12-13 11:20:08 +08:00
|
|
|
|
UTF8String name; ///<节点用户自定义名称
|
2019-12-10 21:52:10 +08:00
|
|
|
|
|
2019-12-13 11:20:08 +08:00
|
|
|
|
InputParamList input_params;
|
|
|
|
|
OutputParamList output_params;
|
2019-12-12 22:25:40 +08:00
|
|
|
|
|
2019-12-10 22:12:09 +08:00
|
|
|
|
public:
|
2019-12-10 21:52:10 +08:00
|
|
|
|
|
2019-12-10 22:12:09 +08:00
|
|
|
|
Node(const UTF8String &n){type_name=n;}
|
|
|
|
|
virtual ~Node()=default;
|
2019-12-12 22:25:40 +08:00
|
|
|
|
|
2019-12-13 11:20:08 +08:00
|
|
|
|
const UTF8String & GetTypename ()const{return type_name;}
|
|
|
|
|
|
|
|
|
|
const UTF8String & GetName ()const{return name;}
|
|
|
|
|
void SetName (const UTF8String &n){name=n;}
|
|
|
|
|
|
|
|
|
|
InputParamList & GetInputParamList (){return input_params;}
|
|
|
|
|
OutputParamList & GetOutputParamList (){return output_params;}
|
2019-12-12 22:25:40 +08:00
|
|
|
|
|
|
|
|
|
public: //参数相关
|
|
|
|
|
|
|
|
|
|
virtual bool IsOutputParam(param::OutputParam *);
|
|
|
|
|
|
2019-12-13 11:20:08 +08:00
|
|
|
|
virtual bool Check(); ///<检测当前节点是否可用
|
2019-12-10 22:12:09 +08:00
|
|
|
|
};//class Node
|
2019-12-10 21:52:10 +08:00
|
|
|
|
END_SHADER_NODE_NAMESPACE
|
|
|
|
|
#endif//HGL_GRAPH_SHADER_NODE_INCLUDE
|