81 lines
1.9 KiB
C
81 lines
1.9 KiB
C
|
#ifndef HGL_SHADER_NODE_INCLUDE
|
|||
|
#define HGL_SHADER_NODE_INCLUDE
|
|||
|
|
|||
|
#define SHADER_NODE_NAMESPACE hgl::graph::shader::node
|
|||
|
#define BEGIN_SHADER_NODE_NAMESPACE namespace hgl{namespace graph{namespace shader{namespace node{
|
|||
|
#define END_SHADER_NODE_NAMESPACE }}}}
|
|||
|
|
|||
|
BEGIN_SHADER_NODE_NAMESPACE
|
|||
|
/**
|
|||
|
* Shader 节点是所有Shader的基础,它可以是一个简单的计算,也可以是一段复杂的函数
|
|||
|
*/
|
|||
|
class Node
|
|||
|
{
|
|||
|
UTF8String type_name; ///<节点类型本身的名称
|
|||
|
UTF8String name; ///<节点用户自定义名称
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
Node(const UTF8String &n){type_name=n;}
|
|||
|
virtual ~Node()=default;
|
|||
|
};//class Node
|
|||
|
|
|||
|
/**
|
|||
|
* 纯输入节点
|
|||
|
*/
|
|||
|
class Input:virtual public Node
|
|||
|
{
|
|||
|
public:
|
|||
|
|
|||
|
ObjectList<InputParam> input_params;
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
using Node::Node;
|
|||
|
virtual ~InputNode()=default;
|
|||
|
};//class InputNode
|
|||
|
|
|||
|
/**
|
|||
|
* 纯输出节点,用于固管行为的向下一级节点输入数据,无输入部分
|
|||
|
*/
|
|||
|
class Output:virtual public Node
|
|||
|
{
|
|||
|
public:
|
|||
|
|
|||
|
ObjectList<OutputParam> output_params;
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
using Node::Node;
|
|||
|
virtual ~OutputNode()=default;
|
|||
|
};//
|
|||
|
|
|||
|
/**
|
|||
|
* 输入输出节点
|
|||
|
*/
|
|||
|
class InputOutput:public Node
|
|||
|
{
|
|||
|
public:
|
|||
|
|
|||
|
ObjectList<InputParam> input_params;
|
|||
|
ObjectList<OutputParam> output_params;
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
using Node::Node;
|
|||
|
virtual ~InputOutputNode()=default;
|
|||
|
};//
|
|||
|
|
|||
|
/**
|
|||
|
* 最终节点,用于最终结果的一类节点,无输出部分
|
|||
|
*/
|
|||
|
class Finish:virtual public InputNode
|
|||
|
{
|
|||
|
public:
|
|||
|
|
|||
|
using InputNode::InputNode;
|
|||
|
virtual ~FinishNode()=default;
|
|||
|
};//
|
|||
|
BEGIN_SHADER_NODE_NAMESPACE
|
|||
|
#endif//HGL_SHADER_NODE_INCLUDE
|