diff --git a/inc/hgl/graph/shader/ShaderMaker.h b/inc/hgl/graph/shader/ShaderMaker.h index b8ec5bf2..6625a734 100644 --- a/inc/hgl/graph/shader/ShaderMaker.h +++ b/inc/hgl/graph/shader/ShaderMaker.h @@ -2,16 +2,25 @@ #define HGL_GRAPH_SHADER_MAKER_INCLUDE #include +#include BEGIN_SHADER_NAMESPACE class ShaderMaker { node::Finished *fin_node; +protected: + + List vi_list; ///<顶点输入节点列表 +// List tex_list; ///<纹理输入节点列表 +// List ubo_list; /// func_list; ///<材质函数节点列表 + public: ShaderMaker(node::Finished *fn){fin_node=fn;} virtual ~ShaderMaker()=default; + virtual bool Check(); virtual bool Make(); };//class ShaderMaker END_SHADER_NAMESPACE diff --git a/inc/hgl/graph/shader/node/finished.h b/inc/hgl/graph/shader/node/finished.h index c4a74579..eb4a4d5d 100644 --- a/inc/hgl/graph/shader/node/finished.h +++ b/inc/hgl/graph/shader/node/finished.h @@ -12,7 +12,7 @@ class Finished:public Node { public: - using Node::Node; + Finished(const UTF8String &n):Node(NodeType::Finished,n){} virtual ~Finished()=default; };//class Finished:public Input diff --git a/inc/hgl/graph/shader/node/node.h b/inc/hgl/graph/shader/node/node.h index 4bb4b370..4c6d15de 100644 --- a/inc/hgl/graph/shader/node/node.h +++ b/inc/hgl/graph/shader/node/node.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -22,7 +23,7 @@ using OutputParamMapByName=Map; */ class Node { - UTF8String type_name; ///<节点类型本身的名称 + NodeType type; protected: @@ -49,11 +50,11 @@ public: public: - Node(const UTF8String &n){type_name=n;} - Node(const UTF8String &tn,const UTF8String &n){type_name=tn;user_name=n;} + Node(const NodeType &nt){type=nt;} + Node(const NodeType &nt,const UTF8String &n){type=nt;user_name=n;} virtual ~Node()=default; - const UTF8String & GetTypename ()const{return type_name;} + const NodeType GetNodeType ()const{return type;} const UTF8String & GetUsername ()const{return user_name;} void SetUsername (const UTF8String &n){user_name=n;} diff --git a/inc/hgl/graph/shader/node/type.h b/inc/hgl/graph/shader/node/type.h new file mode 100644 index 00000000..18c04b55 --- /dev/null +++ b/inc/hgl/graph/shader/node/type.h @@ -0,0 +1,25 @@ +#ifndef HGL_GRAPH_SHADER_NODE_TYPE_INCLUDE +#define HGL_GRAPH_SHADER_NODE_TYPE_INCLUDE + +#include + +BEGIN_SHADER_NODE_NAMESPACE +enum class NodeType +{ + VertexInput=0, ///<顶点输入流节点 + + Const, ///<固定数据输入 + Param, ///<参数输入 + + Texture, + UBO, + Function, + + Finished, ///<最终节点 + + BEGIN_NODE_TYPE_RANGE =VertexInput, + END_NODE_TYPE_RANGE =Finished, + NODE_TYPE_RANGE_SIZE =(END_NODE_TYPE_RANGE-BEGIN_NODE_TYPE_RANGE)+1 +};//enum class NodeType +END_SHADER_NODE_NAMESPACE +#endif//HGL_GRAPH_SHADER_NODE_TYPE_INCLUDE diff --git a/inc/hgl/graph/shader/node/vertex_input.h b/inc/hgl/graph/shader/node/vertex_input.h index 4c9b3328..3ddcf965 100644 --- a/inc/hgl/graph/shader/node/vertex_input.h +++ b/inc/hgl/graph/shader/node/vertex_input.h @@ -10,7 +10,7 @@ class VertexInput:public Node { public: - VertexInput(const UTF8String &n,const param::ParamType &pt):Node("VertexInput",n) + VertexInput(const UTF8String &n,const param::ParamType &pt):Node(NodeType::VertexInput,n) { AddOutput(n,pt); } diff --git a/src/RenderDevice/Shader/ShaderMaker.cpp b/src/RenderDevice/Shader/ShaderMaker.cpp index aeaef7af..a301f348 100644 --- a/src/RenderDevice/Shader/ShaderMaker.cpp +++ b/src/RenderDevice/Shader/ShaderMaker.cpp @@ -3,7 +3,7 @@ #include BEGIN_SHADER_NAMESPACE -bool ShaderMaker::Make() +bool ShaderMaker::Check() { if(!fin_node) return(false); @@ -50,4 +50,12 @@ bool ShaderMaker::Make() return(true); } + +bool ShaderMaker::Make() +{ + if(!Check()) + return(false); + + +} END_SHADER_NAMESPACE