2019-12-10 21:52:10 +08:00
|
|
|
|
#ifndef HGL_GRAPH_SHADER_MAKER_INCLUDE
|
|
|
|
|
#define HGL_GRAPH_SHADER_MAKER_INCLUDE
|
2019-12-06 21:47:17 +08:00
|
|
|
|
|
2019-12-12 22:25:40 +08:00
|
|
|
|
#include<hgl/graph/shader/node/finished.h>
|
2019-12-14 20:52:58 +08:00
|
|
|
|
#include<hgl/graph/shader/node/vertex_input.h>
|
2019-12-12 22:25:40 +08:00
|
|
|
|
BEGIN_SHADER_NAMESPACE
|
2019-12-15 20:51:11 +08:00
|
|
|
|
|
|
|
|
|
using NodeList=List<node::Node *>;
|
|
|
|
|
|
2019-12-12 22:25:40 +08:00
|
|
|
|
class ShaderMaker
|
2019-12-06 21:47:17 +08:00
|
|
|
|
{
|
2019-12-12 22:25:40 +08:00
|
|
|
|
node::Finished *fin_node;
|
2019-12-06 21:47:17 +08:00
|
|
|
|
|
2019-12-14 20:52:58 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
2019-12-15 20:51:11 +08:00
|
|
|
|
NodeList node_list[node::NodeType::NODE_TYPE_RANGE_SIZE];
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
virtual void MakeHeader();
|
|
|
|
|
virtual void MakeVertexInput(const NodeList &);
|
|
|
|
|
virtual void MakeConstValue(const NodeList &);
|
|
|
|
|
virtual void MakeTextureInput(const NodeList &);
|
|
|
|
|
virtual void MakeUBOInput(const NodeList &);
|
|
|
|
|
virtual void MakeOutput();
|
|
|
|
|
virtual void MakeFinished();
|
2019-12-14 20:52:58 +08:00
|
|
|
|
|
2019-12-12 22:25:40 +08:00
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
ShaderMaker(node::Finished *fn){fin_node=fn;}
|
2019-12-13 17:55:20 +08:00
|
|
|
|
virtual ~ShaderMaker()=default;
|
2019-12-12 22:25:40 +08:00
|
|
|
|
|
2019-12-14 20:52:58 +08:00
|
|
|
|
virtual bool Check();
|
2019-12-13 17:55:20 +08:00
|
|
|
|
virtual bool Make();
|
2019-12-12 22:25:40 +08:00
|
|
|
|
};//class ShaderMaker
|
|
|
|
|
END_SHADER_NAMESPACE
|
2019-12-10 21:52:10 +08:00
|
|
|
|
#endif//HGL_GRAPH_SHADER_MAKER_INCLUDE
|