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:
|
protected:
|
||||||
|
|
||||||
virtual bool GenInputParamCode(UTF8StringList &);
|
virtual bool GenInputParamCode(UTF8StringList &);
|
||||||
virtual bool GenOutputParamCode(UTF8StringList &);
|
virtual bool GenOutputParamCode(UTF8StringList &){return true;}
|
||||||
|
|
||||||
protected:
|
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, ///<顶点输入流节点
|
VertexInput=0, ///<顶点输入流节点
|
||||||
|
|
||||||
|
ComboVector, ///<向量合成
|
||||||
|
SplitVector, ///<向量折解
|
||||||
|
|
||||||
|
ShaderFunction, ///<shader原生函数
|
||||||
|
|
||||||
Const, ///<固定数据输入
|
Const, ///<固定数据输入
|
||||||
Param, ///<参数输入
|
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);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Node::GenOutputParamCode(UTF8StringList &)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define SHADER_NODE_TEMP_VALUE_COMMENT ";\t\t\t// temp value of ["+node_name+"]"
|
#define SHADER_NODE_TEMP_VALUE_COMMENT ";\t\t\t// temp value of ["+node_name+"]"
|
||||||
|
|
||||||
bool Node::GenTempValueDefine(UTF8StringList &sl)
|
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);
|
sl.Add("\t"+UTF8String(param::GetTypename(pt))+" "+value_name+SHADER_NODE_TEMP_VALUE_COMMENT);
|
||||||
else
|
else
|
||||||
sl.Add("\t"+UTF8String(param::GetTypename(pt))+" "+value_name+"="+(*ip)->GetDefaultValue()+SHADER_NODE_TEMP_VALUE_COMMENT);
|
sl.Add("\t"+UTF8String(param::GetTypename(pt))+" "+value_name+"="+(*ip)->GetDefaultValue()+SHADER_NODE_TEMP_VALUE_COMMENT);
|
||||||
|
|
||||||
++ip;
|
++ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Node::GenCode(UTF8StringList &sl)
|
bool Node::GenCode(UTF8StringList &sl)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user