add comboVector and splitVector node
This commit is contained in:
parent
7dd42cb369
commit
f6417e79d0
113
inc/hgl/graph/shader/node/combo_vector.h
Normal file
113
inc/hgl/graph/shader/node/combo_vector.h
Normal file
@ -0,0 +1,113 @@
|
||||
#ifndef HGL_GRAPH_SHADER_NODE_COMBO_VECTOR_INCLUDE
|
||||
#define HGL_GRAPH_SHADER_NODE_COMBO_VECTOR_INCLUDE
|
||||
|
||||
#include<hgl/graph/shader/node/node.h>
|
||||
BEGIN_SHADER_NODE_NAMESPACE
|
||||
class ComboVector1to2:public Node
|
||||
{
|
||||
param::InputParam *ip_x,*ip_y;
|
||||
param::OutputParam *op_xy;
|
||||
|
||||
public:
|
||||
|
||||
ComboVector1to2():Node(NodeType::ComboVector)
|
||||
{
|
||||
ip_x=SHADER_INPUT_PARAM(false,X,Float1)
|
||||
ip_y=SHADER_INPUT_PARAM(false,Y,Float1)
|
||||
|
||||
op_xy=SHADER_OUTPUT_PARAM(XY,Float2)
|
||||
}
|
||||
|
||||
bool GenOutputParamCode(UTF8StringList &)override;
|
||||
//bool GenCode(UTF8StringList &) override;
|
||||
};//class ComboVector1to2:public Node
|
||||
|
||||
class ComboVector1to3:public Node
|
||||
{
|
||||
param::InputParam *ip_x,*ip_y,*ip_z;
|
||||
|
||||
public:
|
||||
|
||||
ComboVector1to3():Node(NodeType::ComboVector)
|
||||
{
|
||||
ip_x=SHADER_INPUT_PARAM(false,X,Float1)
|
||||
ip_y=SHADER_INPUT_PARAM(false,Y,Float1)
|
||||
ip_z=SHADER_INPUT_PARAM(false,Z,Float1)
|
||||
|
||||
SHADER_OUTPUT_PARAM(XYZ,Float3)
|
||||
}
|
||||
|
||||
bool GenCode(UTF8StringList &) override;
|
||||
};//class ComboVector1to3:public Node
|
||||
|
||||
class ComboVector1to4:public Node
|
||||
{
|
||||
param::InputParam *ip_x,*ip_y,*ip_z,*ip_w;
|
||||
|
||||
public:
|
||||
|
||||
ComboVector1to4():Node(NodeType::ComboVector)
|
||||
{
|
||||
ip_x=SHADER_INPUT_PARAM(false,X,Float1)
|
||||
ip_y=SHADER_INPUT_PARAM(false,Y,Float1)
|
||||
ip_z=SHADER_INPUT_PARAM(false,Z,Float1)
|
||||
ip_w=SHADER_INPUT_PARAM(false,W,Float1)
|
||||
|
||||
SHADER_OUTPUT_PARAM(XYZW,Float4)
|
||||
}
|
||||
|
||||
bool GenCode(UTF8StringList &) override;
|
||||
};//class ComboVector1to4:public Node
|
||||
|
||||
class ComboVector12to3:public Node
|
||||
{
|
||||
param::InputParam *ip_xy,*ip_z;
|
||||
|
||||
public:
|
||||
|
||||
ComboVector12to3():Node(NodeType::ComboVector)
|
||||
{
|
||||
ip_xy=SHADER_INPUT_PARAM(false,XY,Float2)
|
||||
ip_z =SHADER_INPUT_PARAM(false,Z,Float1)
|
||||
|
||||
SHADER_OUTPUT_PARAM(XYZ,Float3)
|
||||
}
|
||||
|
||||
bool GenCode(UTF8StringList &) override;
|
||||
};//class ComboVector2to3:public Node
|
||||
|
||||
class ComboVector13to4:public Node
|
||||
{
|
||||
param::InputParam *ip_xyz,*ip_w;
|
||||
|
||||
public:
|
||||
|
||||
ComboVector13to4():Node(NodeType::ComboVector)
|
||||
{
|
||||
ip_xyz=SHADER_INPUT_PARAM(false,XYZ,Float3)
|
||||
ip_w =SHADER_INPUT_PARAM(false,W,Float1)
|
||||
|
||||
SHADER_OUTPUT_PARAM(XYZW,Float4)
|
||||
}
|
||||
|
||||
bool GenCode(UTF8StringList &) override;
|
||||
};//class ComboVector13to4:public Node
|
||||
|
||||
class ComboVector22to4:public Node
|
||||
{
|
||||
param::InputParam *ip_xy,*ip_zw;
|
||||
|
||||
public:
|
||||
|
||||
ComboVector22to4():Node(NodeType::ComboVector)
|
||||
{
|
||||
ip_xy=SHADER_INPUT_PARAM(false,XY,Float2)
|
||||
ip_zw=SHADER_INPUT_PARAM(false,ZW,Float2)
|
||||
|
||||
SHADER_OUTPUT_PARAM(XYZW,Float4)
|
||||
}
|
||||
|
||||
bool GenCode(UTF8StringList &) override;
|
||||
};//class ComboVector22to4:public Node
|
||||
END_SHADER_NODE_NAMESPACE
|
||||
#endif//HGL_GRAPH_SHADER_NODE_COMBO_VECTOR_INCLUDE
|
@ -38,7 +38,7 @@ protected:
|
||||
protected:
|
||||
|
||||
virtual bool GenInputParamCode(UTF8StringList &);
|
||||
virtual bool GenOutputParamCode(UTF8StringList &);
|
||||
virtual bool GenOutputParamCode(UTF8StringList &){return true;}
|
||||
|
||||
protected:
|
||||
|
||||
|
68
inc/hgl/graph/shader/node/op.h
Normal file
68
inc/hgl/graph/shader/node/op.h
Normal file
@ -0,0 +1,68 @@
|
||||
#ifndef HGL_GRAPH_SHADER_NODE_OP_INCLUDE
|
||||
#define HGL_GRAPH_SHADER_NODE_OP_INCLUDE
|
||||
|
||||
#include<hgl/graph/shader/node/node.h>
|
||||
BEGIN_SHADER_NODE_NAMESPACE
|
||||
enum class ScalarOpType:uint
|
||||
{
|
||||
Add=0, Sub, Mul, Div,
|
||||
Mod, Pow, Min, Max,
|
||||
Sin, Cos, Atan, Step,
|
||||
|
||||
BEGIN_OP_RANGE=Add,
|
||||
END_OP_RANGE=Step,
|
||||
RANGE_SIZE=(END_OP_RANGE-BEGIN_OP_RANGE)+1
|
||||
};//enum class OpType:uint
|
||||
|
||||
class ScalarOp:public Node
|
||||
{
|
||||
public:
|
||||
};//class ScalarOp:public Node
|
||||
|
||||
class ComboVectorOp1to2:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
ComboVectorOp1to2():Node(NodeType::ComboVector)
|
||||
{
|
||||
SHADER_INPUT_PARAM(false,X,Float1)
|
||||
SHADER_INPUT_PARAM(false,Y,Float1)
|
||||
|
||||
SHADER_OUTPUT_PARAM(XY,Float2)
|
||||
}
|
||||
};//class ComboVectorOp1to2:public Node
|
||||
|
||||
enum class VectorOpType:uint
|
||||
{
|
||||
Add=0, Sub, Mul, Div,
|
||||
Mod, Pow, Min, Max,
|
||||
Cross, Atan, Reflect,Step,
|
||||
|
||||
BEGIN_OP_RANGE=Add,
|
||||
END_OP_RANGE=Step,
|
||||
RANGE_SIZE=(END_OP_RANGE-BEGIN_OP_RANGE)+1
|
||||
};//enum class VectorOpType:uint
|
||||
|
||||
class VectorOp:public Node
|
||||
{
|
||||
public:
|
||||
};//class VectorOp:public Node
|
||||
|
||||
enum class ColorOpType:uint
|
||||
{
|
||||
Screen=0,
|
||||
Difference,
|
||||
Darken,
|
||||
Lighten,
|
||||
Overlay,
|
||||
Dodge,
|
||||
Burn,
|
||||
SoftLight,
|
||||
HardLight,
|
||||
|
||||
BEGIN_OP_RANGE=Screen,
|
||||
END_OP_RANGE=HardLight,
|
||||
RANGE_SIZE=(END_OP_RANGE-BEGIN_OP_RANGE)+1
|
||||
};//enum class ColorOpType:uint
|
||||
END_SHADER_NODE_NAMESPACE
|
||||
#endif//HGL_GRAPH_SHADER_NODE_OP_INCLUDE
|
87
inc/hgl/graph/shader/node/split_vector.h
Normal file
87
inc/hgl/graph/shader/node/split_vector.h
Normal file
@ -0,0 +1,87 @@
|
||||
#ifndef HGL_GRAPH_SHADER_NODE_SPLIT_VECTOR_INCLUDE
|
||||
#define HGL_GRAPH_SHADER_NODE_SPLIT_VECTOR_INCLUDE
|
||||
|
||||
#include<hgl/graph/shader/node/node.h>
|
||||
BEGIN_SHADER_NODE_NAMESPACE
|
||||
class SplitVector2to1:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
SplitVector2to1():Node(NodeType::SplitVector)
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(X,Float1)
|
||||
SHADER_OUTPUT_PARAM(Y,Float1)
|
||||
|
||||
SHADER_INPUT_PARAM(true,XY,Float2)
|
||||
}
|
||||
};//class SplitVector2to1:public Node
|
||||
|
||||
class SplitVector3to1:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
SplitVector3to1():Node(NodeType::SplitVector)
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(X,Float1)
|
||||
SHADER_OUTPUT_PARAM(Y,Float1)
|
||||
SHADER_OUTPUT_PARAM(Z,Float1)
|
||||
|
||||
SHADER_INPUT_PARAM(true,XYZ,Float3)
|
||||
}
|
||||
};//class SplitVector3to1:public Node
|
||||
|
||||
class SplitVector4to1:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
SplitVector4to1():Node(NodeType::SplitVector)
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(X,Float1)
|
||||
SHADER_OUTPUT_PARAM(Y,Float1)
|
||||
SHADER_OUTPUT_PARAM(Z,Float1)
|
||||
SHADER_OUTPUT_PARAM(W,Float1)
|
||||
|
||||
SHADER_INPUT_PARAM(true,XYZW,Float4)
|
||||
}
|
||||
};//class SplitVector4to1:public Node
|
||||
|
||||
class SplitVector3to12:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
SplitVector3to12():Node(NodeType::SplitVector)
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(XY,Float2)
|
||||
SHADER_OUTPUT_PARAM(Z,Float1)
|
||||
|
||||
SHADER_INPUT_PARAM(true,XYZ,Float3)
|
||||
}
|
||||
};//class SplitVector2to3:public Node
|
||||
|
||||
class SplitVector4to13:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
SplitVector4to13():Node(NodeType::SplitVector)
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(XYZ,Float3)
|
||||
SHADER_OUTPUT_PARAM(W,Float1)
|
||||
|
||||
SHADER_INPUT_PARAM(true,XYZW,Float4)
|
||||
}
|
||||
};//class SplitVector4to13:public Node
|
||||
|
||||
class SplitVector4to22:public Node
|
||||
{
|
||||
public:
|
||||
|
||||
SplitVector4to22():Node(NodeType::SplitVector)
|
||||
{
|
||||
SHADER_OUTPUT_PARAM(XY,Float2)
|
||||
SHADER_OUTPUT_PARAM(ZW,Float2)
|
||||
|
||||
SHADER_INPUT_PARAM(true,XYZW,Float4)
|
||||
}
|
||||
};//class SplitVector4to22:public Node
|
||||
END_SHADER_NODE_NAMESPACE
|
||||
#endif//HGL_GRAPH_SHADER_NODE_SPLIT_VECTOR_INCLUDE
|
@ -8,6 +8,11 @@ enum class NodeType:int
|
||||
{
|
||||
VertexInput=0, ///<顶点输入流节点
|
||||
|
||||
ComboVector, ///<向量合成
|
||||
SplitVector, ///<向量折解
|
||||
|
||||
ShaderFunction, ///<shader原生函数
|
||||
|
||||
Const, ///<固定数据输入
|
||||
Param, ///<参数输入
|
||||
|
||||
|
18
src/RenderDevice/Shader/node/combo_vector.cpp
Normal file
18
src/RenderDevice/Shader/node/combo_vector.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include<hgl/graph/shader/node/combo_vector.h>
|
||||
|
||||
BEGIN_SHADER_NODE_NAMESPACE
|
||||
bool ComboVector1to2::GenOutputParamCode(UTF8StringList &sl)
|
||||
{
|
||||
UTF8String name_x,name_y;
|
||||
UTF8String name_output;
|
||||
|
||||
if(!GetInputParamName(name_x,ip_x))return(false);
|
||||
if(!GetInputParamName(name_y,ip_y))return(false);
|
||||
|
||||
if(!GetOutputParamName(name_output,op_xy))return(false);
|
||||
|
||||
sl.Add(name_output+"=vec2("+name_x+","+name_y+");");
|
||||
|
||||
return(true);
|
||||
}
|
||||
END_SHADER_NODE_NAMESPACE
|
@ -113,11 +113,6 @@ bool Node::GenInputParamCode(UTF8StringList &sl)
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool Node::GenOutputParamCode(UTF8StringList &)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
#define SHADER_NODE_TEMP_VALUE_COMMENT ";\t\t\t// temp value of ["+node_name+"]"
|
||||
|
||||
bool Node::GenTempValueDefine(UTF8StringList &sl)
|
||||
@ -138,11 +133,11 @@ bool Node::GenTempValueDefine(UTF8StringList &sl)
|
||||
sl.Add("\t"+UTF8String(param::GetTypename(pt))+" "+value_name+SHADER_NODE_TEMP_VALUE_COMMENT);
|
||||
else
|
||||
sl.Add("\t"+UTF8String(param::GetTypename(pt))+" "+value_name+"="+(*ip)->GetDefaultValue()+SHADER_NODE_TEMP_VALUE_COMMENT);
|
||||
|
||||
|
||||
++ip;
|
||||
}
|
||||
|
||||
return(true);
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool Node::GenCode(UTF8StringList &sl)
|
||||
|
Loading…
x
Reference in New Issue
Block a user