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("Header Files" FILES ${GRAPH_SHADER_HEADER})
|
||||||
SOURCE_GROUP("Source Files" FILES ${GRAPH_SHADER_SOURCE})
|
SOURCE_GROUP("Source Files" FILES ${GRAPH_SHADER_SOURCE})
|
||||||
|
|
||||||
add_library(ULRE.Shader STATIC ${GRAPH_SHADER_HEADER}
|
add_cm_library(ULRE.Shader "ULRE" ${GRAPH_SHADER_HEADER}
|
||||||
${GRAPH_SHADER_SOURCE})
|
${GRAPH_SHADER_SOURCE})
|
||||||
|
|
||||||
set_property(TARGET ULRE.Shader PROPERTY FOLDER "ULRE")
|
|
@ -28,7 +28,6 @@ SET(VK_RENDER_PASS_SOURCE VKFramebuffer.cpp
|
|||||||
VKSwapchain.cpp
|
VKSwapchain.cpp
|
||||||
VKCommandBuffer.cpp)
|
VKCommandBuffer.cpp)
|
||||||
|
|
||||||
|
|
||||||
SET(RENDER_DEVICE_VULKAN_SOURCE VKFormat.cpp
|
SET(RENDER_DEVICE_VULKAN_SOURCE VKFormat.cpp
|
||||||
VKMemory.cpp
|
VKMemory.cpp
|
||||||
VKProperties.cpp
|
VKProperties.cpp
|
||||||
@ -57,7 +56,7 @@ SOURCE_GROUP("Header Files" FILES ${RENDER_DEVICE_VULKAN_HEADER})
|
|||||||
SOURCE_GROUP("Source Files" FILES ${RENDER_DEVICE_VULKAN_SOURCE})
|
SOURCE_GROUP("Source Files" FILES ${RENDER_DEVICE_VULKAN_SOURCE})
|
||||||
SOURCE_GROUP("POD Source Files" FILES ${RENDER_DEVICE_VULKAN_POD_SOURCE})
|
SOURCE_GROUP("POD Source Files" FILES ${RENDER_DEVICE_VULKAN_POD_SOURCE})
|
||||||
|
|
||||||
add_library(ULRE.RenderDevice.Vulkan STATIC ${RENDER_DEVICE_VULKAN_HEADER}
|
add_cm_library(ULRE.RenderDevice.Vulkan "ULRE" ${RENDER_DEVICE_VULKAN_HEADER}
|
||||||
${RENDER_DEVICE_VULKAN_SOURCE}
|
${RENDER_DEVICE_VULKAN_SOURCE}
|
||||||
${RENDER_DEVICE_VULKAN_POD_SOURCE}
|
${RENDER_DEVICE_VULKAN_POD_SOURCE}
|
||||||
|
|
||||||
@ -67,5 +66,3 @@ add_library(ULRE.RenderDevice.Vulkan STATIC ${RENDER_DEVICE_VULKAN_HEADER}
|
|||||||
${VK_MATERIAL_SOURCE}
|
${VK_MATERIAL_SOURCE}
|
||||||
${VK_RENDER_PASS_SOURCE}
|
${VK_RENDER_PASS_SOURCE}
|
||||||
${RENDER_DEVICE_VULKAN_SOURCE})
|
${RENDER_DEVICE_VULKAN_SOURCE})
|
||||||
|
|
||||||
set_property(TARGET ULRE.RenderDevice.Vulkan PROPERTY FOLDER "ULRE")
|
|
||||||
|
@ -32,7 +32,5 @@ SET(SCENE_GRAPH_SOURCE Coordinate.cpp
|
|||||||
SOURCE_GROUP("Header Files" FILES ${SCENE_GRAPH_HEADER})
|
SOURCE_GROUP("Header Files" FILES ${SCENE_GRAPH_HEADER})
|
||||||
SOURCE_GROUP("Source Files" FILES ${SCENE_GRAPH_SOURCE})
|
SOURCE_GROUP("Source Files" FILES ${SCENE_GRAPH_SOURCE})
|
||||||
|
|
||||||
add_library(ULRE.SceneGraph STATIC ${SCENE_GRAPH_HEADER}
|
add_cm_library(ULRE.SceneGraph "ULRE" ${SCENE_GRAPH_HEADER}
|
||||||
${SCENE_GRAPH_SOURCE})
|
${SCENE_GRAPH_SOURCE})
|
||||||
|
|
||||||
set_property(TARGET ULRE.SceneGraph PROPERTY FOLDER "ULRE")
|
|
@ -10,7 +10,5 @@ SET(UTIL_SOURCE #Field.cpp
|
|||||||
SOURCE_GROUP("Header Files" FILES ${UTIL_HEADER})
|
SOURCE_GROUP("Header Files" FILES ${UTIL_HEADER})
|
||||||
SOURCE_GROUP("Source Files" FILES ${UTIL_SOURCE})
|
SOURCE_GROUP("Source Files" FILES ${UTIL_SOURCE})
|
||||||
|
|
||||||
add_library(ULRE.Util STATIC ${UTIL_HEADER}
|
add_cm_library(ULRE.Util "ULRE" ${UTIL_HEADER}
|
||||||
${UTIL_SOURCE})
|
${UTIL_SOURCE})
|
||||||
|
|
||||||
set_property(TARGET ULRE.Util PROPERTY FOLDER "ULRE")
|
|
Loading…
x
Reference in New Issue
Block a user