update struct
This commit is contained in:
parent
47ccb2c3c6
commit
c3a3275f12
2
CMCore
2
CMCore
@ -1 +1 @@
|
|||||||
Subproject commit 2d9765839e0446292ae96ce126c01ffb04bc30a7
|
Subproject commit 328e6d2f26f0cbd15104dd817798f20cc624ea80
|
@ -1,8 +1,18 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_MAKER_INCLUDE
|
#ifndef HGL_GRAPH_SHADER_MAKER_INCLUDE
|
||||||
#define HGL_GRAPH_SHADER_MAKER_INCLUDE
|
#define HGL_GRAPH_SHADER_MAKER_INCLUDE
|
||||||
|
|
||||||
namespace hgl
|
#include<hgl/graph/shader/node/finished.h>
|
||||||
|
BEGIN_SHADER_NAMESPACE
|
||||||
|
class ShaderMaker
|
||||||
{
|
{
|
||||||
|
node::Finished *fin_node;
|
||||||
|
|
||||||
}//namespace hgl
|
public:
|
||||||
|
|
||||||
|
ShaderMaker(node::Finished *fn){fin_node=fn;}
|
||||||
|
~ShaderMaker();
|
||||||
|
|
||||||
|
bool Make();
|
||||||
|
};//class ShaderMaker
|
||||||
|
END_SHADER_NAMESPACE
|
||||||
#endif//HGL_GRAPH_SHADER_MAKER_INCLUDE
|
#endif//HGL_GRAPH_SHADER_MAKER_INCLUDE
|
||||||
|
@ -13,4 +13,13 @@
|
|||||||
#define BEGIN_SHADER_PARAM_NAMESPACE namespace hgl{namespace graph{namespace shader{namespace param{
|
#define BEGIN_SHADER_PARAM_NAMESPACE namespace hgl{namespace graph{namespace shader{namespace param{
|
||||||
#define END_SHADER_PARAM_NAMESPACE }}}}
|
#define END_SHADER_PARAM_NAMESPACE }}}}
|
||||||
|
|
||||||
|
BEGIN_SHADER_NODE_NAMESPACE
|
||||||
|
class Node;
|
||||||
|
END_SHADER_NODE_NAMESPACE
|
||||||
|
|
||||||
|
BEGIN_SHADER_PARAM_NAMESPACE
|
||||||
|
class Param;
|
||||||
|
class InputParam:public Param;
|
||||||
|
class OutputParam:public Param;
|
||||||
|
END_SHADER_PARAM_NAMESPACE
|
||||||
#endif//HGL_GRAPH_SHADER_COMMON_INCLUDE
|
#endif//HGL_GRAPH_SHADER_COMMON_INCLUDE
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_NODE_FINISHED_INCLUDE
|
#ifndef HGL_GRAPH_SHADER_NODE_FINISHED_INCLUDE
|
||||||
#define HGL_GRAPH_SHADER_NODE_FINISHED_INCLUDE
|
#define HGL_GRAPH_SHADER_NODE_FINISHED_INCLUDE
|
||||||
|
|
||||||
#include<hgl/graph/shader/node/in.h>
|
#include<hgl/graph/shader/node/node.h>
|
||||||
#include<hgl/graph/shader/param/in.h>
|
#include<hgl/graph/shader/param/in.h>
|
||||||
|
|
||||||
BEGIN_SHADER_NODE_NAMESPACE
|
BEGIN_SHADER_NODE_NAMESPACE
|
||||||
/**
|
/**
|
||||||
* 最终节点,用于最终结果的一类节点,无输出部分
|
* 最终节点,用于最终结果的一类节点,无输出部分
|
||||||
*/
|
*/
|
||||||
class Finished:public Input
|
class Finished:public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
using Input::Input;
|
using Node::Node;
|
||||||
virtual ~Finished()=default;
|
virtual ~Finished()=default;
|
||||||
};//class Finished:public Input
|
};//class Finished:public Input
|
||||||
|
|
||||||
@ -25,7 +25,10 @@ public:
|
|||||||
|
|
||||||
VertexFinished():Finished("Vertex Output")
|
VertexFinished():Finished("Vertex Output")
|
||||||
{
|
{
|
||||||
|
SHADER_INPUT_PARAM(Position, Float3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~VertexFinished()=default;
|
||||||
};//class VertexFinished:public FinishedNode
|
};//class VertexFinished:public FinishedNode
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,13 +40,15 @@ public:
|
|||||||
|
|
||||||
FragmentFinished():Finished("Fragment Output")
|
FragmentFinished():Finished("Fragment Output")
|
||||||
{
|
{
|
||||||
SHADER_INPUT_PARAM(BaseColor, FLOAT_3)
|
SHADER_INPUT_PARAM(BaseColor, Float3)
|
||||||
SHADER_INPUT_PARAM(Normal, FLOAT_3)
|
SHADER_INPUT_PARAM(Normal, Float3)
|
||||||
SHADER_INPUT_PARAM(Metallic, FLOAT_1)
|
SHADER_INPUT_PARAM(Metallic, Float1)
|
||||||
SHADER_INPUT_PARAM(Roughness, FLOAT_1)
|
SHADER_INPUT_PARAM(Roughness, Float1)
|
||||||
SHADER_INPUT_PARAM(Opacity, FLOAT_1)
|
SHADER_INPUT_PARAM(Opacity, Float1)
|
||||||
SHADER_INPUT_PARAM(DepthOffset, FLOAT_1)
|
SHADER_INPUT_PARAM(DepthOffset, Float1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~FragmentFinished()=default;
|
||||||
};//class FragmentFinished:public Finished
|
};//class FragmentFinished:public Finished
|
||||||
END_SHADER_NODE_NAMESPACE
|
END_SHADER_NODE_NAMESPACE
|
||||||
#endif//HGL_GRAPH_SHADER_NODE_FINISHED_INCLUDE
|
#endif//HGL_GRAPH_SHADER_NODE_FINISHED_INCLUDE
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_NODE_INPUT_INCLUDE
|
|
||||||
#define HGL_GRAPH_SHADER_NODE_INPUT_INCLUDE
|
|
||||||
|
|
||||||
#include<hgl/graph/shader/node/node.h>
|
|
||||||
#include<hgl/graph/shader/param/in.h>
|
|
||||||
|
|
||||||
BEGIN_SHADER_NODE_NAMESPACE
|
|
||||||
/**
|
|
||||||
* 纯输入节点
|
|
||||||
*/
|
|
||||||
class Input:public Node
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
|
|
||||||
ObjectList<param::InputParam> input_params;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
using Node::Node;
|
|
||||||
virtual ~Input()=default;
|
|
||||||
};//class InputNode
|
|
||||||
END_SHADER_NODE_NAMESPACE
|
|
||||||
#endif//HGL_GRAPH_SHADER_NODE_INPUT_INCLUDE
|
|
@ -1,24 +0,0 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_NODE_INOUT_INCLUDE
|
|
||||||
#define HGL_GRAPH_SHADER_NODE_INOUT_INCLUDE
|
|
||||||
|
|
||||||
#include<hgl/graph/shader/node/node.h>
|
|
||||||
#include<hgl/graph/shader/param/in.h>
|
|
||||||
#include<hgl/graph/shader/param/out.h>
|
|
||||||
BEGIN_SHADER_NODE_NAMESPACE
|
|
||||||
/**
|
|
||||||
* 输入输出节点
|
|
||||||
*/
|
|
||||||
class InputOutput:public Node
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
|
|
||||||
ObjectList<InputParam> input_params;
|
|
||||||
ObjectList<OutputParam> output_params;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
using Node::Node;
|
|
||||||
virtual ~InputOutput()=default;
|
|
||||||
};//class InputOutput:public Node
|
|
||||||
END_SHADER_NODE_NAMESPACE
|
|
||||||
#endif//HGL_GRAPH_SHADER_NODE_INOUT_INCLUDE
|
|
@ -12,12 +12,29 @@ BEGIN_SHADER_NODE_NAMESPACE
|
|||||||
class Node
|
class Node
|
||||||
{
|
{
|
||||||
UTF8String type_name; ///<节点类型本身的名称
|
UTF8String type_name; ///<节点类型本身的名称
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
UTF8String name; ///<节点用户自定义名称
|
UTF8String name; ///<节点用户自定义名称
|
||||||
|
|
||||||
|
ObjectList<param::InputParam> input_params;
|
||||||
|
ObjectList<param::OutputParam> output_params;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Node(const UTF8String &n){type_name=n;}
|
Node(const UTF8String &n){type_name=n;}
|
||||||
virtual ~Node()=default;
|
virtual ~Node()=default;
|
||||||
|
|
||||||
|
const UTF8String & GetTypename()const{return type_name;}
|
||||||
|
|
||||||
|
const UTF8String & GetName()const{return name;}
|
||||||
|
void SetName(const UTF8String &n){name=n;}
|
||||||
|
|
||||||
|
public: //参数相关
|
||||||
|
|
||||||
|
virtual bool IsOutputParam(param::OutputParam *);
|
||||||
|
|
||||||
|
virtual bool CheckInputParam();
|
||||||
};//class Node
|
};//class Node
|
||||||
END_SHADER_NODE_NAMESPACE
|
END_SHADER_NODE_NAMESPACE
|
||||||
#endif//HGL_GRAPH_SHADER_NODE_INCLUDE
|
#endif//HGL_GRAPH_SHADER_NODE_INCLUDE
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_NODE_OUTPUT_INCLUDE
|
|
||||||
#define HGL_GRAPH_SHADER_NODE_OUTPUT_INCLUDE
|
|
||||||
|
|
||||||
#include<hgl/graph/shader/node/node.h>
|
|
||||||
#include<hgl/graph/shader/param/out.h>
|
|
||||||
BEGIN_SHADER_NODE_NAMESPACE
|
|
||||||
/**
|
|
||||||
* 纯输出节点,用于固定行为的向下一级节点输入数据,无输入部分
|
|
||||||
*/
|
|
||||||
class Output:public Node
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
|
|
||||||
ObjectList<OutputParam> output_params;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
using Node::Node;
|
|
||||||
virtual ~Output()=default;
|
|
||||||
};//class Output:public Node
|
|
||||||
END_SHADER_NODE_NAMESPACE
|
|
||||||
#endif//HGL_GRAPH_SHADER_NODE_OUTPUT_INCLUDE
|
|
28
inc/hgl/graph/shader/param/data.h
Normal file
28
inc/hgl/graph/shader/param/data.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef HGL_GRAPH_SHADER_PARAM_DATA_INCLUDE
|
||||||
|
#define HGL_GRAPH_SHADER_PARAM_DATA_INCLUDE
|
||||||
|
|
||||||
|
#include<hgl/graph/shader/param/type.h>
|
||||||
|
|
||||||
|
BEGIN_SHADER_PARAM_NAMESPACE
|
||||||
|
class ParamData
|
||||||
|
{
|
||||||
|
ParamType type;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
ParamData();
|
||||||
|
virtual ~ParamData();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 比较当前类型是否接收外部参数的输入
|
||||||
|
* @param in 外部传入的参数
|
||||||
|
*/
|
||||||
|
virtual bool JoinCheck(const ParamData *in)
|
||||||
|
{
|
||||||
|
if(!in)return(false);
|
||||||
|
|
||||||
|
return(type==in->type);
|
||||||
|
}
|
||||||
|
};//class ParamData
|
||||||
|
END_SHADER_PARAM_NAMESPACE
|
||||||
|
#endif//HGL_GRAPH_SHADER_PARAM_DATA_INCLUDE
|
@ -1,6 +1,8 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
|
#ifndef HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
|
||||||
#define HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
|
#define HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
|
||||||
|
|
||||||
|
#include<hgl/graph/shader/node/node.h>
|
||||||
|
#include<hgl/graph/shader/param/out.h>
|
||||||
#include<hgl/graph/shader/param/param.h>
|
#include<hgl/graph/shader/param/param.h>
|
||||||
|
|
||||||
BEGIN_SHADER_PARAM_NAMESPACE
|
BEGIN_SHADER_PARAM_NAMESPACE
|
||||||
@ -12,24 +14,19 @@ BEGIN_SHADER_PARAM_NAMESPACE
|
|||||||
*/
|
*/
|
||||||
class InputParam:public Param
|
class InputParam:public Param
|
||||||
{
|
{
|
||||||
|
node::Node *input_node;
|
||||||
|
param::OutputParam *output_param;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
using Param::Param;
|
using Param::Param;
|
||||||
virtual ~InputParam()=default;
|
virtual ~InputParam()=default;
|
||||||
|
|
||||||
|
virtual bool Join(node::Node *,OutputParam *); ///<增加一个输入节点
|
||||||
|
virtual void Break(); ///<断开一个输入节点
|
||||||
|
|
||||||
|
virtual bool Check(); ///<检测当前节点是否可用
|
||||||
};//class InputParam:public Param
|
};//class InputParam:public Param
|
||||||
|
|
||||||
/**
|
|
||||||
* 数值类输入参数定义
|
|
||||||
*/
|
|
||||||
template<typename T>
|
|
||||||
class InputParamNumber:public InputParam
|
|
||||||
{
|
|
||||||
bool is_const;
|
|
||||||
T min_value;
|
|
||||||
T max_value;
|
|
||||||
|
|
||||||
public:
|
|
||||||
};//class InputParamNumber:public InputParam
|
|
||||||
|
|
||||||
END_SHADER_PARAM_NAMESPACE
|
END_SHADER_PARAM_NAMESPACE
|
||||||
#endif//#ifndef HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
|
#endif//#ifndef HGL_GRAPH_SHADER_PARAM_INPUT_INCLUDE
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
#ifndef HGL_GRAPH_SHADER_PARAM_OUTPUT_INCLUDE
|
#ifndef HGL_GRAPH_SHADER_PARAM_OUTPUT_INCLUDE
|
||||||
#define HGL_GRAPH_SHADER_PARAM_OUTPUT_INCLUDE
|
#define HGL_GRAPH_SHADER_PARAM_OUTPUT_INCLUDE
|
||||||
|
|
||||||
#include<hgl/graph/shader/param/in.h>
|
#include<hgl/graph/shader/param/param.h>
|
||||||
#include<hgl/graph/shader/node/node.h>
|
|
||||||
#include<hgl/type/Set.h>
|
#include<hgl/type/Set.h>
|
||||||
#include<hgl/type/Pair.h>
|
#include<hgl/type/Pair.h>
|
||||||
|
|
||||||
@ -10,8 +9,6 @@ BEGIN_SHADER_PARAM_NAMESPACE
|
|||||||
|
|
||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
|
|
||||||
using InputNode=Pair<node::Node *,InputParam *>;
|
|
||||||
|
|
||||||
#define SHADER_OUTPUT_PARAM(name,type) output_params.Add(new SHADER_PARAM_NAMESPACE::Param(#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));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,16 +16,11 @@ using InputNode=Pair<node::Node *,InputParam *>;
|
|||||||
*/
|
*/
|
||||||
class OutputParam:public Param
|
class OutputParam:public Param
|
||||||
{
|
{
|
||||||
Set<InputNode> join_param; //对应的多个输入节点
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
using Param::Param;
|
using Param::Param;
|
||||||
virtual ~OutputParam()=default;
|
virtual ~OutputParam()=default;
|
||||||
|
|
||||||
bool Join(node::Node *,InputParam *ip); //增加一个输入节点
|
|
||||||
void Break(node::Node *,InputParam *ip); //断开一个输入节点
|
|
||||||
void BreakAll(); //断开所有输入节点
|
|
||||||
};//class OutputParam:public Param
|
};//class OutputParam:public Param
|
||||||
|
|
||||||
END_SHADER_PARAM_NAMESPACE
|
END_SHADER_PARAM_NAMESPACE
|
||||||
|
@ -5,78 +5,15 @@
|
|||||||
#include<hgl/graph/shader/common.h>
|
#include<hgl/graph/shader/common.h>
|
||||||
|
|
||||||
BEGIN_SHADER_PARAM_NAMESPACE
|
BEGIN_SHADER_PARAM_NAMESPACE
|
||||||
/**
|
/**
|
||||||
* 参数类型
|
|
||||||
*/
|
|
||||||
enum class ParamType
|
|
||||||
{
|
|
||||||
BOOL=1,
|
|
||||||
|
|
||||||
FLOAT,INT,UINT,MATRIX, //不区分1/2/3/4通道数量的类型
|
|
||||||
|
|
||||||
FLOAT_1,
|
|
||||||
FLOAT_2,
|
|
||||||
FLOAT_3,
|
|
||||||
FLOAT_4,
|
|
||||||
|
|
||||||
INT_1,
|
|
||||||
INT_2,
|
|
||||||
INT_3,
|
|
||||||
INT_4,
|
|
||||||
|
|
||||||
UINT_1,
|
|
||||||
UINT_2,
|
|
||||||
UINT_3,
|
|
||||||
UINT_4,
|
|
||||||
|
|
||||||
MAT3x3,
|
|
||||||
MAT3x4,
|
|
||||||
MAT4x4,
|
|
||||||
|
|
||||||
TEXTURE_1D,
|
|
||||||
TEXTURE_2D,
|
|
||||||
TEXTURE_3D,
|
|
||||||
TEXTURE_CUBE,
|
|
||||||
|
|
||||||
TEXTURE_1D_ARRAY,
|
|
||||||
TEXTURE_2D_ARRAY,
|
|
||||||
TEXTURE_CUBE_ARRAY,
|
|
||||||
|
|
||||||
FLOAT_1_STREAM,
|
|
||||||
FLOAT_2_STREAM,
|
|
||||||
FLOAT_3_STREAM,
|
|
||||||
FLOAT_4_STREAM,
|
|
||||||
|
|
||||||
INT_1_STREAM,
|
|
||||||
INT_2_STREAM,
|
|
||||||
INT_3_STREAM,
|
|
||||||
INT_4_STREAM,
|
|
||||||
|
|
||||||
UINT_1_STREAM,
|
|
||||||
UINT_2_STREAM,
|
|
||||||
UINT_3_STREAM,
|
|
||||||
UINT_4_STREAM,
|
|
||||||
|
|
||||||
ARRAY_1D, //阵列
|
|
||||||
ARRAY_2D, //2D阵列
|
|
||||||
|
|
||||||
UBO, //UBO name
|
|
||||||
NODE, //另一个节点,只可做为输入参数
|
|
||||||
|
|
||||||
BEGIN_RANGE =FLOAT_1,
|
|
||||||
END_RANGE =NODE,
|
|
||||||
RANGE_SIZE =(END_RANGE-BEGIN_RANGE+1)
|
|
||||||
};//enum class ParamType
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 参数定义
|
* 参数定义
|
||||||
*/
|
*/
|
||||||
class Param
|
class Param
|
||||||
{
|
{
|
||||||
UTF8String name; //参数名称
|
UTF8String name; //参数名称
|
||||||
ParamType type; //类型
|
ParamType type; //类型
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Param(const UTF8String &n,const ParamType &t)
|
Param(const UTF8String &n,const ParamType &t)
|
||||||
{
|
{
|
||||||
@ -85,7 +22,6 @@ BEGIN_SHADER_PARAM_NAMESPACE
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual ~Param()=default;
|
virtual ~Param()=default;
|
||||||
};//class Param
|
};//class Param
|
||||||
|
|
||||||
END_SHADER_PARAM_NAMESPACE
|
END_SHADER_PARAM_NAMESPACE
|
||||||
#endif//HGL_GRAPH_SHADER_PARAM_INCLUDE
|
#endif//HGL_GRAPH_SHADER_PARAM_INCLUDE
|
||||||
|
72
inc/hgl/graph/shader/param/type.h
Normal file
72
inc/hgl/graph/shader/param/type.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#ifndef HGL_GRAPH_SHADER_PARAM_INCLUDE
|
||||||
|
#define HGL_GRAPH_SHADER_PARAM_INCLUDE
|
||||||
|
|
||||||
|
#include<hgl/graph/shader/common.h>
|
||||||
|
|
||||||
|
BEGIN_SHADER_PARAM_NAMESPACE
|
||||||
|
/**
|
||||||
|
* 参数类型
|
||||||
|
*/
|
||||||
|
enum class ParamType
|
||||||
|
{
|
||||||
|
BOOL=1,
|
||||||
|
|
||||||
|
FLOAT,INT,UINT,MATRIX, //不区分1/2/3/4通道数量的类型
|
||||||
|
|
||||||
|
Float1,
|
||||||
|
Float2,
|
||||||
|
Float3,
|
||||||
|
Float4,
|
||||||
|
|
||||||
|
Integer1,
|
||||||
|
Integer2,
|
||||||
|
Integer3,
|
||||||
|
Integer4,
|
||||||
|
|
||||||
|
UInteger1,
|
||||||
|
UInteger2,
|
||||||
|
UInteger3,
|
||||||
|
UInteger4,
|
||||||
|
|
||||||
|
Matrix3x3,
|
||||||
|
Matrix3x4,
|
||||||
|
Matrix4x4,
|
||||||
|
|
||||||
|
Texture1D,
|
||||||
|
Texture2D,
|
||||||
|
Texture3D,
|
||||||
|
TextureCube,
|
||||||
|
TextureRect,
|
||||||
|
|
||||||
|
Texture1DArray,
|
||||||
|
Texture2DArray,
|
||||||
|
TextureCubeArray,
|
||||||
|
|
||||||
|
FLOAT_1_STREAM,
|
||||||
|
FLOAT_2_STREAM,
|
||||||
|
FLOAT_3_STREAM,
|
||||||
|
FLOAT_4_STREAM,
|
||||||
|
|
||||||
|
INT_1_STREAM,
|
||||||
|
INT_2_STREAM,
|
||||||
|
INT_3_STREAM,
|
||||||
|
INT_4_STREAM,
|
||||||
|
|
||||||
|
UINT_1_STREAM,
|
||||||
|
UINT_2_STREAM,
|
||||||
|
UINT_3_STREAM,
|
||||||
|
UINT_4_STREAM,
|
||||||
|
|
||||||
|
ARRAY_1D, //阵列
|
||||||
|
ARRAY_2D, //2D阵列
|
||||||
|
|
||||||
|
UBO, //UBO name
|
||||||
|
NODE, //另一个节点,只可做为输入参数
|
||||||
|
|
||||||
|
BEGIN_RANGE =Float1,
|
||||||
|
END_RANGE =NODE,
|
||||||
|
RANGE_SIZE =(END_RANGE-BEGIN_RANGE+1)
|
||||||
|
};//enum class ParamType
|
||||||
|
END_SHADER_PARAM_NAMESPACE
|
||||||
|
#endif//HGL_GRAPH_SHADER_PARAM_INCLUDE
|
||||||
|
|
@ -1,16 +1,22 @@
|
|||||||
SET(GRAPH_SHADER_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/shader)
|
SET(GRAPH_SHADER_HEADER_PATH ${ROOT_INCLUDE_PATH}/hgl/graph/shader)
|
||||||
SET(GRAPH_SHADER_NODE_PATH ${GRAPH_SHADER_HEADER_PATH}/node)
|
SET(GRAPH_SHADER_NODE_HEADER_PATH ${GRAPH_SHADER_HEADER_PATH}/node)
|
||||||
SET(GRAPH_SHADER_PARAM_PATH ${GRAPH_SHADER_HEADER_PATH}/param)
|
SET(GRAPH_SHADER_PARAM_HEADER_PATH ${GRAPH_SHADER_HEADER_PATH}/param)
|
||||||
|
|
||||||
file(GLOB GRAPH_SHADER_NODE_HEADER_FILES ${GRAPH_SHADER_NODE_PATH}/*.h)
|
file(GLOB GRAPH_SHADER_NODE_HEADER_FILES ${GRAPH_SHADER_NODE_HEADER_PATH}/*.h)
|
||||||
|
file(GLOB GRAPH_SHADER_PARAM_HEADER_FILES ${GRAPH_SHADER_PARAM_HEADER_PATH}/*.h)
|
||||||
|
|
||||||
source_group("Shader Maker\\Node" FILES ${GRAPH_SHADER_NODE_HEADER_FILES})
|
file(GLOB GRAPH_SHADER_NODE_SOURCE_FILES FILES node/*.*)
|
||||||
|
file(GLOB GRAPH_SHADER_PARAM_SOURCE_FILES FILES param/*.*)
|
||||||
|
|
||||||
file(GLOB GRAPH_SHADER_PARAM_HEADER_FILES ${GRAPH_SHADER_PARAM_PATH}/*.h)
|
SET(GRAPH_SHADER_NODE_FILES ${GRAPH_SHADER_NODE_HEADER_FILES} ${GRAPH_SHADER_NODE_SOURCE_FILES})
|
||||||
|
SET(GRAPH_SHADER_PARAM_FILES ${GRAPH_SHADER_PARAM_HEADER_FILES} ${GRAPH_SHADER_PARAM_SOURCE_FILES})
|
||||||
|
|
||||||
source_group("Shader Maker\\Param" FILES ${GRAPH_SHADER_PARAM_HEADER_FILES})
|
source_group("Shader Maker\\Node" FILES ${GRAPH_SHADER_NODE_FILES})
|
||||||
|
source_group("Shader Maker\\Param" FILES ${GRAPH_SHADER_PARAM_FILES})
|
||||||
|
|
||||||
SET(GRAPH_SHADER_MAKER_SOURCE DefaultShader.cpp)
|
SET(GRAPH_SHADER_MAKER_SOURCE ${GRAPH_SHADER_HEADER_PATH}/ShaderMaker.h
|
||||||
|
ShaderMaker.cpp
|
||||||
|
DefaultShader.cpp)
|
||||||
|
|
||||||
source_group("Shader Maker" FILES ${GRAPH_SHADER_MAKER_SOURCE})
|
source_group("Shader Maker" FILES ${GRAPH_SHADER_MAKER_SOURCE})
|
||||||
|
|
||||||
@ -20,8 +26,8 @@ SET(GRAPH_SPV_SOURCE ${GRAPH_SHADER_HEADER_PATH}/glsl2spv.h
|
|||||||
SOURCE_GROUP("SPIR-V" FILES ${GRAPH_SPV_SOURCE})
|
SOURCE_GROUP("SPIR-V" FILES ${GRAPH_SPV_SOURCE})
|
||||||
|
|
||||||
add_cm_library(ULRE.Shader "ULRE" ${GRAPH_SHADER_HEADER_PATH}/common.h
|
add_cm_library(ULRE.Shader "ULRE" ${GRAPH_SHADER_HEADER_PATH}/common.h
|
||||||
${GRAPH_SHADER_NODE_HEADER_FILES}
|
${GRAPH_SHADER_NODE_FILES}
|
||||||
${GRAPH_SHADER_PARAM_HEADER_FILES}
|
${GRAPH_SHADER_PARAM_FILES}
|
||||||
${GRAPH_SHADER_MAKER_SOURCE}
|
${GRAPH_SHADER_MAKER_SOURCE}
|
||||||
${GRAPH_SPV_SOURCE})
|
${GRAPH_SPV_SOURCE})
|
||||||
|
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
#include<hgl/graph/shader/param/out.h>
|
#include<hgl/graph/shader/param/in.h>
|
||||||
|
#include<hgl/graph/shader/param/out.h>
|
||||||
#include<hgl/graph/shader/node/finished.h>
|
#include<hgl/graph/shader/node/finished.h>
|
||||||
|
#include<hgl/graph/shader/ShaderMaker.h>
|
||||||
|
|
||||||
BEGIN_SHADER_NAMESPACE
|
BEGIN_SHADER_NAMESPACE
|
||||||
bool CreateDefaultMaterial()
|
bool CreateDefaultMaterial()
|
||||||
{
|
{
|
||||||
node::Finished *vs_fin=new node::VertexFinished();
|
ShaderMaker vs_maker(new node::VertexFinished());
|
||||||
node::Finished *fs_fin=new node::ForwardFinished();
|
|
||||||
|
|
||||||
|
if(!vs_maker.Make())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
ShaderMaker fs_maker(new node::FragmentFinished());
|
||||||
|
|
||||||
|
if(!fs_maker.Make())
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
return(true);
|
||||||
}
|
}
|
||||||
END_SHADER_NAMESPACE
|
END_SHADER_NAMESPACE
|
||||||
|
14
src/RenderDevice/Shader/ShaderMaker.cpp
Normal file
14
src/RenderDevice/Shader/ShaderMaker.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include<hgl/graph/shader/ShaderMaker.h>
|
||||||
|
|
||||||
|
BEGIN_SHADER_NAMESPACE
|
||||||
|
bool ShaderMaker::Make()
|
||||||
|
{
|
||||||
|
if(!fin_node)
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
if(!fin_node->CheckInputParam())
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
END_SHADER_NAMESPACE
|
17
src/RenderDevice/Shader/node/shader_node.cpp
Normal file
17
src/RenderDevice/Shader/node/shader_node.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include<hgl/graph/shader/node/node.h>
|
||||||
|
|
||||||
|
BEGIN_SHADER_NODE_NAMESPACE
|
||||||
|
bool Node::CheckInputParam()
|
||||||
|
{
|
||||||
|
const int count=input_params.GetCount();
|
||||||
|
param::InputParam **ip=input_params.GetData();
|
||||||
|
|
||||||
|
for(int i=0;i<count;i++)
|
||||||
|
if(!(*ip)->Check())
|
||||||
|
return(false);
|
||||||
|
else
|
||||||
|
++ip;
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
END_SHADER_NODE_NAMESPACE
|
24
src/RenderDevice/Shader/param/shader_param_in.cpp
Normal file
24
src/RenderDevice/Shader/param/shader_param_in.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include<hgl/graph/shader/param/in.h>
|
||||||
|
|
||||||
|
BEGIN_SHADER_PARAM_NAMESPACE
|
||||||
|
bool InputParam::Join(node::Node *n,OutputParam *op)
|
||||||
|
{
|
||||||
|
if(!n||!op)return(false);
|
||||||
|
|
||||||
|
if(!n->IsOutputParam(op))
|
||||||
|
return(false);
|
||||||
|
|
||||||
|
input_node=n;
|
||||||
|
output_param=op;
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputParam::Break()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InputParam::Check()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
END_SHADER_PARAM_NAMESPACE
|
Loading…
x
Reference in New Issue
Block a user