add shader node header files.

This commit is contained in:
hyzboy 2019-12-06 21:45:51 +08:00
parent 834cb48fa9
commit 793b61b6a8
9 changed files with 305 additions and 24 deletions

View 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

View 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

View 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

View 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

View 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

View File

@ -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})

View File

@ -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})

View File

@ -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})

View File

@ -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})