add shader node header files.
This commit is contained in:
parent
834cb48fa9
commit
793b61b6a8
80
inc/hgl/graph/shader/ShaderNode.h
Normal file
80
inc/hgl/graph/shader/ShaderNode.h
Normal file
@ -0,0 +1,80 @@
|
||||
#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
|
15
inc/hgl/graph/shader/ShaderNodeDefine.h
Normal file
15
inc/hgl/graph/shader/ShaderNodeDefine.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef HGL_SHADER_NODE_DEFINE_INCLUDE
|
||||
#define HGL_SHADER_NODE_DEFINE_INCLUDE
|
||||
|
||||
BEGIN_SHADER_NAMESPACE
|
||||
namespace node
|
||||
{
|
||||
class Bool
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
};//class Bool
|
||||
}//namespace node
|
||||
END_SHADER_NAMESPACE
|
||||
#endif//HGL_SHADER_NODE_DEFINE_INCLUDE
|
94
inc/hgl/graph/shader/ShaderParam.h
Normal file
94
inc/hgl/graph/shader/ShaderParam.h
Normal file
@ -0,0 +1,94 @@
|
||||
#ifndef HGL_SHADER_PARAM_TYPE_INCLUDE
|
||||
#define HGL_SHADER_PARAM_TYPE_INCLUDE
|
||||
|
||||
#define BEGIN_SHADER_NAMESPACE namespace hgl{namespace graph{namespace shader{
|
||||
#undef END_SHADER_NAMESPACE }}}
|
||||
|
||||
BEGIN_SHADER_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_RAGE-BEGIN_RANGE+1)
|
||||
};//enum class ParamType
|
||||
|
||||
/**
|
||||
* 参数定义
|
||||
*/
|
||||
struct Param
|
||||
{
|
||||
UTF8String name; //参数名称
|
||||
ParamType type; //类型
|
||||
};//struct Param
|
||||
/**
|
||||
* 数值类输入参数定义
|
||||
*/
|
||||
template<typename T>
|
||||
struct ParamNumber:public Param
|
||||
{
|
||||
bool is_const;
|
||||
T min_value;
|
||||
T max_value;
|
||||
};//struct ParamNumber:public Param
|
||||
|
||||
#define SHADER_INPUT_PARAM(name,type) input_params.Add(new Param(#name,ParamType::type);
|
||||
#define SHADER_OUTPUT_PARAM(name,type) output_params.Add(new Param(#name,ParamType::type);
|
||||
|
||||
END_SHADER_NAMESPACE
|
||||
#endif//HGL_SHADER_PARAM_TYPE_INCLUDE
|
46
inc/hgl/graph/shader/TextureNode.h
Normal file
46
inc/hgl/graph/shader/TextureNode.h
Normal file
@ -0,0 +1,46 @@
|
||||
#ifndef HGL_SHADER_TEXTURE_NODE_INCLUDE
|
||||
#define HGL_SHADER_TEXTURE_NODE_INCLUDE
|
||||
|
||||
#include<hgl/graph/shader/VectorNode.h>
|
||||
BEGIN_SHADER_NODE_NAMESPACE
|
||||
class texture1D:public InputOutput
|
||||
{
|
||||
public:
|
||||
|
||||
texture1D():InputOutput("texture1D")
|
||||
{
|
||||
SHADER_INPUT_PARAM(U,FLOAT1)
|
||||
}
|
||||
};//class texture1D:public InputOutput
|
||||
|
||||
class texture2D:public InputOutput
|
||||
{
|
||||
public:
|
||||
|
||||
texture2D():InputOutput("texture2D")
|
||||
{
|
||||
SHADER_INPUT_PARAM(UV,FLOAT2)
|
||||
}
|
||||
};//class texture2D:public InputOutput
|
||||
|
||||
class texture3D:public InputOutput
|
||||
{
|
||||
public:
|
||||
|
||||
texture3D():InputOutput("texture3D")
|
||||
{
|
||||
SHADER_INPUT_PARAM(UVD,FLOAT3)
|
||||
}
|
||||
};//class texture3D:public InputOutput
|
||||
|
||||
class TextureCube:public InputOutput
|
||||
{
|
||||
public:
|
||||
|
||||
textureCube():InputOutput("textureCube")
|
||||
{
|
||||
SHADER_INPUT_PARAM(XYZ,FLOAT3)
|
||||
}
|
||||
};//class TextureCube:public InputOutput
|
||||
END_SHADER_NODE_NAMESPACE
|
||||
#endif//HGL_SHADER_TEXTURE_NODE_INCLUDE
|
55
inc/hgl/graph/shader/VectorNode.h
Normal file
55
inc/hgl/graph/shader/VectorNode.h
Normal file
@ -0,0 +1,55 @@
|
||||
#ifndef HGL_GRAPH_SHADER_VECTOR_NODE_INCLUDE
|
||||
#define HGL_GRAPH_SHADER_VECTOR_NODE_INCLUDE
|
||||
|
||||
#include<hgl/graph/shader/ShaderParam.h>
|
||||
#include<hgl/graph/shader/ShaderNode.h>
|
||||
BEGIN_SHADER_NAMESPACE
|
||||
class float1:public Output
|
||||
{
|
||||
float x;
|
||||
|
||||
public:
|
||||
|
||||
float1():Output("float1")
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(X,FLOAT_1)
|
||||
}
|
||||
};//class float1:public Output
|
||||
|
||||
class float2:public Output
|
||||
{
|
||||
float x,y;
|
||||
|
||||
public:
|
||||
|
||||
float2():Output("float2")
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(XY,FLOAT_2)
|
||||
}
|
||||
};//class float2:public Output
|
||||
|
||||
class float3:public Output
|
||||
{
|
||||
float x,y,z;
|
||||
|
||||
public:
|
||||
|
||||
float3():Output("float3")
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(XYZ,FLOAT_3)
|
||||
}
|
||||
};//class float3:public Output
|
||||
|
||||
class float4:public Output
|
||||
{
|
||||
float x,y,z,w;
|
||||
|
||||
public:
|
||||
|
||||
float4():Output("float4")
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(XYZW,FLOAT_4)
|
||||
}
|
||||
};//class float4:public Output
|
||||
END_SHADER_NAMESPACE
|
||||
#endif//HGL_GRAPH_SHADER_VECTOR_NODE_INCLUDE
|
@ -7,7 +7,5 @@ SET(GRAPH_SHADER_SOURCE glsl2spv.cpp)
|
||||
SOURCE_GROUP("Header Files" FILES ${GRAPH_SHADER_HEADER})
|
||||
SOURCE_GROUP("Source Files" FILES ${GRAPH_SHADER_SOURCE})
|
||||
|
||||
add_library(ULRE.Shader STATIC ${GRAPH_SHADER_HEADER}
|
||||
${GRAPH_SHADER_SOURCE})
|
||||
|
||||
set_property(TARGET ULRE.Shader PROPERTY FOLDER "ULRE")
|
||||
add_cm_library(ULRE.Shader "ULRE" ${GRAPH_SHADER_HEADER}
|
||||
${GRAPH_SHADER_SOURCE})
|
@ -28,7 +28,6 @@ SET(VK_RENDER_PASS_SOURCE VKFramebuffer.cpp
|
||||
VKSwapchain.cpp
|
||||
VKCommandBuffer.cpp)
|
||||
|
||||
|
||||
SET(RENDER_DEVICE_VULKAN_SOURCE VKFormat.cpp
|
||||
VKMemory.cpp
|
||||
VKProperties.cpp
|
||||
@ -57,15 +56,13 @@ SOURCE_GROUP("Header Files" FILES ${RENDER_DEVICE_VULKAN_HEADER})
|
||||
SOURCE_GROUP("Source Files" FILES ${RENDER_DEVICE_VULKAN_SOURCE})
|
||||
SOURCE_GROUP("POD Source Files" FILES ${RENDER_DEVICE_VULKAN_POD_SOURCE})
|
||||
|
||||
add_library(ULRE.RenderDevice.Vulkan STATIC ${RENDER_DEVICE_VULKAN_HEADER}
|
||||
${RENDER_DEVICE_VULKAN_SOURCE}
|
||||
${RENDER_DEVICE_VULKAN_POD_SOURCE}
|
||||
add_cm_library(ULRE.RenderDevice.Vulkan "ULRE" ${RENDER_DEVICE_VULKAN_HEADER}
|
||||
${RENDER_DEVICE_VULKAN_SOURCE}
|
||||
${RENDER_DEVICE_VULKAN_POD_SOURCE}
|
||||
|
||||
${VK_DEVICE_SOURCE}
|
||||
${VK_DESCRIPTOR_SETS_SOURCE}
|
||||
${VK_SHADER_SOURCE}
|
||||
${VK_MATERIAL_SOURCE}
|
||||
${VK_RENDER_PASS_SOURCE}
|
||||
${RENDER_DEVICE_VULKAN_SOURCE})
|
||||
|
||||
set_property(TARGET ULRE.RenderDevice.Vulkan PROPERTY FOLDER "ULRE")
|
||||
${VK_DEVICE_SOURCE}
|
||||
${VK_DESCRIPTOR_SETS_SOURCE}
|
||||
${VK_SHADER_SOURCE}
|
||||
${VK_MATERIAL_SOURCE}
|
||||
${VK_RENDER_PASS_SOURCE}
|
||||
${RENDER_DEVICE_VULKAN_SOURCE})
|
||||
|
@ -32,7 +32,5 @@ SET(SCENE_GRAPH_SOURCE Coordinate.cpp
|
||||
SOURCE_GROUP("Header Files" FILES ${SCENE_GRAPH_HEADER})
|
||||
SOURCE_GROUP("Source Files" FILES ${SCENE_GRAPH_SOURCE})
|
||||
|
||||
add_library(ULRE.SceneGraph STATIC ${SCENE_GRAPH_HEADER}
|
||||
${SCENE_GRAPH_SOURCE})
|
||||
|
||||
set_property(TARGET ULRE.SceneGraph PROPERTY FOLDER "ULRE")
|
||||
add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_HEADER}
|
||||
${SCENE_GRAPH_SOURCE})
|
@ -10,7 +10,5 @@ SET(UTIL_SOURCE #Field.cpp
|
||||
SOURCE_GROUP("Header Files" FILES ${UTIL_HEADER})
|
||||
SOURCE_GROUP("Source Files" FILES ${UTIL_SOURCE})
|
||||
|
||||
add_library(ULRE.Util STATIC ${UTIL_HEADER}
|
||||
${UTIL_SOURCE})
|
||||
|
||||
set_property(TARGET ULRE.Util PROPERTY FOLDER "ULRE")
|
||||
add_cm_library(ULRE.Util "ULRE" ${UTIL_HEADER}
|
||||
${UTIL_SOURCE})
|
Loading…
x
Reference in New Issue
Block a user