base struct of ShaderMaker
This commit is contained in:
parent
751caa1db8
commit
791a034085
@ -4,16 +4,26 @@
|
|||||||
#include<hgl/graph/shader/node/finished.h>
|
#include<hgl/graph/shader/node/finished.h>
|
||||||
#include<hgl/graph/shader/node/vertex_input.h>
|
#include<hgl/graph/shader/node/vertex_input.h>
|
||||||
BEGIN_SHADER_NAMESPACE
|
BEGIN_SHADER_NAMESPACE
|
||||||
|
|
||||||
|
using NodeList=List<node::Node *>;
|
||||||
|
|
||||||
class ShaderMaker
|
class ShaderMaker
|
||||||
{
|
{
|
||||||
node::Finished *fin_node;
|
node::Finished *fin_node;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
List<node::VertexInput *> vi_list; ///<顶点输入节点列表
|
NodeList node_list[node::NodeType::NODE_TYPE_RANGE_SIZE];
|
||||||
// List<node::Texture *> tex_list; ///<纹理输入节点列表
|
|
||||||
// List<node::UBO *> ubo_list; ///<UBO输入节点列表
|
protected:
|
||||||
// List<node::Function *> func_list; ///<材质函数节点列表
|
|
||||||
|
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();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#include<hgl/graph/shader/common.h>
|
#include<hgl/graph/shader/common.h>
|
||||||
|
|
||||||
BEGIN_SHADER_NODE_NAMESPACE
|
BEGIN_SHADER_NODE_NAMESPACE
|
||||||
enum class NodeType
|
enum class NodeType:int
|
||||||
{
|
{
|
||||||
VertexInput=0, ///<顶点输入流节点
|
VertexInput=0, ///<顶点输入流节点
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include<hgl/graph/shader/ShaderMaker.h>
|
#include<hgl/graph/shader/ShaderMaker.h>
|
||||||
#include<hgl/graph/shader/param/in.h>
|
#include<hgl/graph/shader/param/in.h>
|
||||||
#include<hgl/type/Set.h>
|
#include<hgl/type/Set.h>
|
||||||
|
#include<hgl/log/LogInfo.h>
|
||||||
|
|
||||||
BEGIN_SHADER_NAMESPACE
|
BEGIN_SHADER_NAMESPACE
|
||||||
bool ShaderMaker::Check()
|
bool ShaderMaker::Check()
|
||||||
@ -12,6 +13,7 @@ bool ShaderMaker::Check()
|
|||||||
Set<node::Node *> prev; //等待检测的节点合集
|
Set<node::Node *> prev; //等待检测的节点合集
|
||||||
node::Node *cur,*nn;
|
node::Node *cur,*nn;
|
||||||
|
|
||||||
|
node::NodeType type;
|
||||||
node::InputParamList *ipl;
|
node::InputParamList *ipl;
|
||||||
int i,count;
|
int i,count;
|
||||||
param::InputParam **ip;
|
param::InputParam **ip;
|
||||||
@ -26,6 +28,15 @@ bool ShaderMaker::Check()
|
|||||||
|
|
||||||
for(i=0;i<count;i++)
|
for(i=0;i<count;i++)
|
||||||
{
|
{
|
||||||
|
type=cur->GetNodeType();
|
||||||
|
|
||||||
|
if(type<node::NodeType::BEGIN_NODE_TYPE_RANGE
|
||||||
|
||type>node::NodeType::END_NODE_TYPE_RANGE)
|
||||||
|
{
|
||||||
|
LOG_ERROR(U8_TEXT("node type error!"));
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
|
||||||
if(!(*ip)->Check())
|
if(!(*ip)->Check())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
@ -43,7 +54,8 @@ bool ShaderMaker::Check()
|
|||||||
|
|
||||||
ip++;
|
ip++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
node_list[int(type)-int(node::NodeType::BEGIN_NODE_TYPE_RANGE)].Add(cur);
|
||||||
prev.Delete(cur);
|
prev.Delete(cur);
|
||||||
post.Add(cur);
|
post.Add(cur);
|
||||||
}
|
}
|
||||||
@ -51,11 +63,47 @@ bool ShaderMaker::Check()
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeHeader()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeVertexInput(const NodeList &nl)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeConstValue(const NodeList &nl)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeTextureInput(const NodeList &nl)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeUBOInput(const NodeList &nl)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeOutput()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShaderMaker::MakeFinished()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool ShaderMaker::Make()
|
bool ShaderMaker::Make()
|
||||||
{
|
{
|
||||||
if(!Check())
|
if(!Check())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
MakeHeader();
|
||||||
|
MakeVertexInput( node_list[int(node::NodeType::VertexInput )-int(node::NodeType::BEGIN_NODE_TYPE_RANGE)]);
|
||||||
|
MakeConstValue( node_list[int(node::NodeType::Const )-int(node::NodeType::BEGIN_NODE_TYPE_RANGE)]);
|
||||||
|
MakeTextureInput( node_list[int(node::NodeType::Texture )-int(node::NodeType::BEGIN_NODE_TYPE_RANGE)]);
|
||||||
|
MakeUBOInput( node_list[int(node::NodeType::UBO )-int(node::NodeType::BEGIN_NODE_TYPE_RANGE)]);
|
||||||
|
MakeOutput();
|
||||||
|
MakeFinished();
|
||||||
|
|
||||||
|
return(true);
|
||||||
}
|
}
|
||||||
END_SHADER_NAMESPACE
|
END_SHADER_NAMESPACE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user