[VisualShader] Merge scalar and vector derivative functions into one

This commit is contained in:
Yuri Roubinsky 2022-01-28 21:36:10 +03:00
parent b9a2569be6
commit 88b2afa28f
6 changed files with 105 additions and 198 deletions

View file

@ -1235,13 +1235,19 @@ public:
VARIANT_ENUM_CAST(VisualShaderNodeClamp::OpType)
///////////////////////////////////////
/// DERIVATIVE FUNCTIONS
/// DERIVATIVE FUNCTION
///////////////////////////////////////
class VisualShaderNodeScalarDerivativeFunc : public VisualShaderNode {
GDCLASS(VisualShaderNodeScalarDerivativeFunc, VisualShaderNode);
class VisualShaderNodeDerivativeFunc : public VisualShaderNode {
GDCLASS(VisualShaderNodeDerivativeFunc, VisualShaderNode);
public:
enum OpType {
OP_TYPE_SCALAR,
OP_TYPE_VECTOR,
OP_TYPE_MAX,
};
enum Function {
FUNC_SUM,
FUNC_X,
@ -1250,8 +1256,10 @@ public:
};
protected:
OpType op_type = OP_TYPE_SCALAR;
Function func = FUNC_SUM;
protected:
static void _bind_methods();
public:
@ -1267,56 +1275,19 @@ public:
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
void set_function(Function p_func);
Function get_function() const;
virtual Vector<StringName> get_editable_properties() const override;
VisualShaderNodeScalarDerivativeFunc();
};
VARIANT_ENUM_CAST(VisualShaderNodeScalarDerivativeFunc::Function)
///////////////////////////////////////
class VisualShaderNodeVectorDerivativeFunc : public VisualShaderNode {
GDCLASS(VisualShaderNodeVectorDerivativeFunc, VisualShaderNode);
public:
enum Function {
FUNC_SUM,
FUNC_X,
FUNC_Y,
FUNC_MAX,
};
protected:
Function func = FUNC_SUM;
static void _bind_methods();
public:
virtual String get_caption() const override;
virtual int get_input_port_count() const override;
virtual PortType get_input_port_type(int p_port) const override;
virtual String get_input_port_name(int p_port) const override;
virtual int get_output_port_count() const override;
virtual PortType get_output_port_type(int p_port) const override;
virtual String get_output_port_name(int p_port) const override;
virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const override;
void set_op_type(OpType p_op_type);
OpType get_op_type() const;
void set_function(Function p_func);
Function get_function() const;
virtual Vector<StringName> get_editable_properties() const override;
VisualShaderNodeVectorDerivativeFunc();
VisualShaderNodeDerivativeFunc();
};
VARIANT_ENUM_CAST(VisualShaderNodeVectorDerivativeFunc::Function)
VARIANT_ENUM_CAST(VisualShaderNodeDerivativeFunc::OpType)
VARIANT_ENUM_CAST(VisualShaderNodeDerivativeFunc::Function)
///////////////////////////////////////
/// FACEFORWARD