mirror of
https://github.com/godotengine/godot.git
synced 2024-11-22 12:12:28 +00:00
Merge pull request #60175 from Geometror/visual-shader-vector4
This commit is contained in:
commit
f4b0c7a1ea
@ -214,11 +214,13 @@
|
||||
</constant>
|
||||
<constant name="VARYING_TYPE_VECTOR_3D" value="2" enum="VaryingType">
|
||||
</constant>
|
||||
<constant name="VARYING_TYPE_COLOR" value="3" enum="VaryingType">
|
||||
<constant name="VARYING_TYPE_VECTOR_4D" value="3" enum="VaryingType">
|
||||
</constant>
|
||||
<constant name="VARYING_TYPE_TRANSFORM" value="4" enum="VaryingType">
|
||||
<constant name="VARYING_TYPE_COLOR" value="4" enum="VaryingType">
|
||||
</constant>
|
||||
<constant name="VARYING_TYPE_MAX" value="5" enum="VaryingType">
|
||||
<constant name="VARYING_TYPE_TRANSFORM" value="5" enum="VaryingType">
|
||||
</constant>
|
||||
<constant name="VARYING_TYPE_MAX" value="6" enum="VaryingType">
|
||||
</constant>
|
||||
<constant name="NODE_ID_INVALID" value="-1">
|
||||
</constant>
|
||||
|
@ -78,16 +78,19 @@
|
||||
<constant name="PORT_TYPE_VECTOR_3D" value="3" enum="PortType">
|
||||
3D vector of floating-point values. Translated to [code]vec3[/code] type in shader code.
|
||||
</constant>
|
||||
<constant name="PORT_TYPE_BOOLEAN" value="4" enum="PortType">
|
||||
<constant name="PORT_TYPE_VECTOR_4D" value="4" enum="PortType">
|
||||
4D vector of floating-point values. Translated to [code]vec4[/code] type in shader code.
|
||||
</constant>
|
||||
<constant name="PORT_TYPE_BOOLEAN" value="5" enum="PortType">
|
||||
Boolean type. Translated to [code]bool[/code] type in shader code.
|
||||
</constant>
|
||||
<constant name="PORT_TYPE_TRANSFORM" value="5" enum="PortType">
|
||||
<constant name="PORT_TYPE_TRANSFORM" value="6" enum="PortType">
|
||||
Transform type. Translated to [code]mat4[/code] type in shader code.
|
||||
</constant>
|
||||
<constant name="PORT_TYPE_SAMPLER" value="6" enum="PortType">
|
||||
<constant name="PORT_TYPE_SAMPLER" value="7" enum="PortType">
|
||||
Sampler type. Translated to reference of sampler uniform in shader code. Can only be used for input ports in non-uniform nodes.
|
||||
</constant>
|
||||
<constant name="PORT_TYPE_MAX" value="7" enum="PortType">
|
||||
<constant name="PORT_TYPE_MAX" value="8" enum="PortType">
|
||||
Represents the size of the [enum PortType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -26,7 +26,10 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D" value="3" enum="OpType">
|
||||
A 3D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="4" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="4" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="5" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -32,13 +32,16 @@
|
||||
<constant name="CTYPE_VECTOR_3D" value="3" enum="ComparisonType">
|
||||
A 3D vector type.
|
||||
</constant>
|
||||
<constant name="CTYPE_BOOLEAN" value="4" enum="ComparisonType">
|
||||
<constant name="CTYPE_VECTOR_4D" value="4" enum="ComparisonType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="CTYPE_BOOLEAN" value="5" enum="ComparisonType">
|
||||
A boolean type.
|
||||
</constant>
|
||||
<constant name="CTYPE_TRANSFORM" value="5" enum="ComparisonType">
|
||||
<constant name="CTYPE_TRANSFORM" value="6" enum="ComparisonType">
|
||||
A transform ([code]mat4[/code]) type.
|
||||
</constant>
|
||||
<constant name="CTYPE_MAX" value="6" enum="ComparisonType">
|
||||
<constant name="CTYPE_MAX" value="7" enum="ComparisonType">
|
||||
Represents the size of the [enum ComparisonType] enum.
|
||||
</constant>
|
||||
<constant name="FUNC_EQUAL" value="0" enum="Function">
|
||||
|
@ -26,7 +26,10 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D" value="2" enum="OpType">
|
||||
A 3D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="3" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="3" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="4" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
<constant name="FUNC_SUM" value="0" enum="Function">
|
||||
|
@ -29,7 +29,13 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D_SCALAR" value="4" enum="OpType">
|
||||
The [code]a[/code] and [code]b[/code] ports use a 3D vector type. The [code]weight[/code] port uses a scalar type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="5" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="5" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_VECTOR_4D_SCALAR" value="6" enum="OpType">
|
||||
The [code]a[/code] and [code]b[/code] ports use a 4D vector type. The [code]weight[/code] port uses a scalar type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="7" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -23,7 +23,10 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D" value="2" enum="OpType">
|
||||
A 3D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="3" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="3" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="4" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -30,7 +30,13 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D_SCALAR" value="4" enum="OpType">
|
||||
The [code]x[/code] port uses a 3D vector type. The first two ports use a floating-point scalar type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="5" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="5" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_VECTOR_4D_SCALAR" value="6" enum="OpType">
|
||||
The [code]a[/code] and [code]b[/code] ports use a 4D vector type. The [code]weight[/code] port uses a scalar type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="7" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -30,7 +30,13 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D_SCALAR" value="4" enum="OpType">
|
||||
The [code]x[/code] port uses a 3D vector type, while the [code]edge[/code] port uses a floating-point scalar type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="5" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="5" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_VECTOR_4D_SCALAR" value="6" enum="OpType">
|
||||
The [code]a[/code] and [code]b[/code] ports use a 4D vector type. The [code]weight[/code] port uses a scalar type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="7" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -26,13 +26,16 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D" value="3" enum="OpType">
|
||||
A 3D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_BOOLEAN" value="4" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="4" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_BOOLEAN" value="5" enum="OpType">
|
||||
A boolean type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_TRANSFORM" value="5" enum="OpType">
|
||||
<constant name="OP_TYPE_TRANSFORM" value="6" enum="OpType">
|
||||
A transform type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="6" enum="OpType">
|
||||
<constant name="OP_TYPE_MAX" value="7" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
16
doc/classes/VisualShaderNodeVec4Constant.xml
Normal file
16
doc/classes/VisualShaderNodeVec4Constant.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="VisualShaderNodeVec4Constant" inherits="VisualShaderNodeConstant" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
||||
<brief_description>
|
||||
A 4D vector (represented as a [Quaternion]) constant to be used within the visual shader graph.
|
||||
</brief_description>
|
||||
<description>
|
||||
A constant 4D vector (represented as a [Quaternion]), which can be used as an input node.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
<members>
|
||||
<member name="constant" type="Quaternion" setter="set_constant" getter="get_constant" default="Quaternion(0, 0, 0, 1)">
|
||||
A 4D vector (represented as a [Quaternion]) constant which represents the state of this node.
|
||||
</member>
|
||||
</members>
|
||||
</class>
|
19
doc/classes/VisualShaderNodeVec4Uniform.xml
Normal file
19
doc/classes/VisualShaderNodeVec4Uniform.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="VisualShaderNodeVec4Uniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
||||
<brief_description>
|
||||
A 4D vector (represented as a [Quaternion]) uniform to be used within the visual shader graph.
|
||||
</brief_description>
|
||||
<description>
|
||||
Translated to [code]uniform vec4[/code] in the shader language.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
<members>
|
||||
<member name="default_value" type="Quaternion" setter="set_default_value" getter="get_default_value" default="Quaternion(0, 0, 0, 1)">
|
||||
A default value to be assigned within the shader.
|
||||
</member>
|
||||
<member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false">
|
||||
Enables usage of the [member default_value].
|
||||
</member>
|
||||
</members>
|
||||
</class>
|
@ -19,7 +19,10 @@
|
||||
<constant name="OP_TYPE_VECTOR_3D" value="1" enum="OpType">
|
||||
A 3D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="2" enum="OpType">
|
||||
<constant name="OP_TYPE_VECTOR_4D" value="2" enum="OpType">
|
||||
A 4D vector type.
|
||||
</constant>
|
||||
<constant name="OP_TYPE_MAX" value="3" enum="OpType">
|
||||
Represents the size of the [enum OpType] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="VisualShaderNodeVectorCompose" inherits="VisualShaderNodeVectorBase" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
||||
<brief_description>
|
||||
Composes a [Vector3] from three scalars within the visual shader graph.
|
||||
Composes a [Vector2], [Vector3] or 4D vector (represented as a [Quaternion]) from scalars within the visual shader graph.
|
||||
</brief_description>
|
||||
<description>
|
||||
Creates a [code]vec3[/code] using three scalar values that can be provided from separate inputs.
|
||||
Creates a [code]vec2[/code], [code]vec3[/code] or [code]vec4[/code] using scalar values that can be provided from separate inputs.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="VisualShaderNodeVectorDecompose" inherits="VisualShaderNodeVectorBase" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
||||
<brief_description>
|
||||
Decomposes a [Vector3] into three scalars within the visual shader graph.
|
||||
Decomposes a [Vector2], [Vector3] or 4D vector (represented as a [Quaternion]) into scalars within the visual shader graph.
|
||||
</brief_description>
|
||||
<description>
|
||||
Takes a [code]vec3[/code] and decomposes it into three scalar values that can be used as separate inputs.
|
||||
Takes a [code]vec2[/code], [code]vec3[/code] or [code]vec4[/code] and decomposes it into scalar values that can be used as separate outputs.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -308,7 +308,7 @@ void MaterialStorage::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_
|
||||
if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
|
||||
pi.type = Variant::COLOR;
|
||||
} else {
|
||||
pi.type = Variant::PLANE;
|
||||
pi.type = Variant::QUATERNION;
|
||||
}
|
||||
} break;
|
||||
|
||||
|
1
editor/icons/Vector4.svg
Normal file
1
editor/icons/Vector4.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg"><path d="M1 4v6h2a3 3 0 0 0 3-3V4H4v3a1 1 0 0 1-1 1V4zm5 3a3 3 0 0 0 3 3h1V8H9a1 1 0 0 1 0-2h1V4H9a3 3 0 0 0-3 3z" fill="#de66f0"/><path d="m12.467 1.523-1.526 5.694 3.02-.015.044 3.795h1.98V5.116h-2.373l.943-3.595z" fill="#eba2f6"/></svg>
|
After Width: | Height: | Size: 300 B |
@ -211,6 +211,10 @@ void VisualShaderGraphPlugin::set_input_port_default_value(VisualShader::Type p_
|
||||
Vector3 v = p_value;
|
||||
button->set_text(String::num(v.x, 3) + "," + String::num(v.y, 3) + "," + String::num(v.z, 3));
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
Quaternion v = p_value;
|
||||
button->set_text(String::num(v.x, 3) + "," + String::num(v.y, 3) + "," + String::num(v.z, 3) + "," + String::num(v.w, 3));
|
||||
} break;
|
||||
default: {
|
||||
}
|
||||
}
|
||||
@ -339,6 +343,7 @@ void VisualShaderGraphPlugin::update_theme() {
|
||||
vector_expanded_color[0] = editor->get_theme_color(SNAME("axis_x_color"), SNAME("Editor")); // red
|
||||
vector_expanded_color[1] = editor->get_theme_color(SNAME("axis_y_color"), SNAME("Editor")); // green
|
||||
vector_expanded_color[2] = editor->get_theme_color(SNAME("axis_z_color"), SNAME("Editor")); // blue
|
||||
vector_expanded_color[3] = editor->get_theme_color(SNAME("axis_w_color"), SNAME("Editor")); // alpha
|
||||
}
|
||||
|
||||
void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
@ -363,20 +368,22 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
|
||||
static Ref<StyleBoxEmpty> label_style = make_empty_stylebox(2, 1, 2, 1);
|
||||
|
||||
static const Color type_color[7] = {
|
||||
static const Color type_color[] = {
|
||||
Color(0.38, 0.85, 0.96), // scalar (float)
|
||||
Color(0.49, 0.78, 0.94), // scalar (int)
|
||||
Color(0.74, 0.57, 0.95), // vector2
|
||||
Color(0.84, 0.49, 0.93), // vector3
|
||||
Color(1.0, 0.125, 0.95), // vector4
|
||||
Color(0.55, 0.65, 0.94), // boolean
|
||||
Color(0.96, 0.66, 0.43), // transform
|
||||
Color(1.0, 1.0, 0.0), // sampler
|
||||
};
|
||||
|
||||
static const String vector_expanded_name[3] = {
|
||||
static const String vector_expanded_name[4] = {
|
||||
"red",
|
||||
"green",
|
||||
"blue"
|
||||
"blue",
|
||||
"alpha"
|
||||
};
|
||||
|
||||
Ref<VisualShaderNode> vsnode = visual_shader->get_node(p_type, p_id);
|
||||
@ -610,6 +617,9 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
output_port_count += 3;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
output_port_count += 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -636,6 +646,13 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
i -= 3;
|
||||
}
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
if (expanded_port_counter >= 4) {
|
||||
expanded_type = VisualShaderNode::PORT_TYPE_SCALAR;
|
||||
expanded_port_counter = 0;
|
||||
i -= 4;
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -710,6 +727,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
type_box->add_item(TTR("Int"));
|
||||
type_box->add_item(TTR("Vector2"));
|
||||
type_box->add_item(TTR("Vector3"));
|
||||
type_box->add_item(TTR("Vector4"));
|
||||
type_box->add_item(TTR("Boolean"));
|
||||
type_box->add_item(TTR("Transform"));
|
||||
type_box->add_item(TTR("Sampler"));
|
||||
@ -772,6 +790,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
type_box->add_item(TTR("Int"));
|
||||
type_box->add_item(TTR("Vector2"));
|
||||
type_box->add_item(TTR("Vector3"));
|
||||
type_box->add_item(TTR("Vector4"));
|
||||
type_box->add_item(TTR("Boolean"));
|
||||
type_box->add_item(TTR("Transform"));
|
||||
type_box->select(group_node->get_output_port_type(i));
|
||||
@ -880,6 +899,40 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
|
||||
|
||||
expanded_type = VisualShaderNode::PORT_TYPE_VECTOR_3D;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
port_offset++;
|
||||
valid_left = (i + 1) < vsnode->get_input_port_count();
|
||||
port_left = VisualShaderNode::PORT_TYPE_SCALAR;
|
||||
if (valid_left) {
|
||||
port_left = vsnode->get_input_port_type(i + 1);
|
||||
}
|
||||
node->set_slot(i + port_offset, valid_left, port_left, type_color[port_left], true, VisualShaderNode::PORT_TYPE_SCALAR, vector_expanded_color[0]);
|
||||
port_offset++;
|
||||
|
||||
valid_left = (i + 2) < vsnode->get_input_port_count();
|
||||
port_left = VisualShaderNode::PORT_TYPE_SCALAR;
|
||||
if (valid_left) {
|
||||
port_left = vsnode->get_input_port_type(i + 2);
|
||||
}
|
||||
node->set_slot(i + port_offset, valid_left, port_left, type_color[port_left], true, VisualShaderNode::PORT_TYPE_SCALAR, vector_expanded_color[1]);
|
||||
port_offset++;
|
||||
|
||||
valid_left = (i + 3) < vsnode->get_input_port_count();
|
||||
port_left = VisualShaderNode::PORT_TYPE_SCALAR;
|
||||
if (valid_left) {
|
||||
port_left = vsnode->get_input_port_type(i + 3);
|
||||
}
|
||||
node->set_slot(i + port_offset, valid_left, port_left, type_color[port_left], true, VisualShaderNode::PORT_TYPE_SCALAR, vector_expanded_color[2]);
|
||||
|
||||
valid_left = (i + 4) < vsnode->get_input_port_count();
|
||||
port_left = VisualShaderNode::PORT_TYPE_SCALAR;
|
||||
if (valid_left) {
|
||||
port_left = vsnode->get_input_port_type(i + 4);
|
||||
}
|
||||
node->set_slot(i + port_offset, valid_left, port_left, type_color[port_left], true, VisualShaderNode::PORT_TYPE_SCALAR, vector_expanded_color[3]);
|
||||
|
||||
expanded_type = VisualShaderNode::PORT_TYPE_VECTOR_4D;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1467,6 +1520,9 @@ void VisualShaderEditor::_update_options_menu() {
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D:
|
||||
item->set_icon(0, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector3"), SNAME("EditorIcons")));
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D:
|
||||
item->set_icon(0, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector4"), SNAME("EditorIcons")));
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN:
|
||||
item->set_icon(0, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("bool"), SNAME("EditorIcons")));
|
||||
break;
|
||||
@ -1568,6 +1624,7 @@ void VisualShaderEditor::_update_uniforms(bool p_update_refs) {
|
||||
Ref<VisualShaderNodeIntUniform> int_uniform = vsnode;
|
||||
Ref<VisualShaderNodeVec2Uniform> vec2_uniform = vsnode;
|
||||
Ref<VisualShaderNodeVec3Uniform> vec3_uniform = vsnode;
|
||||
Ref<VisualShaderNodeVec4Uniform> vec4_uniform = vsnode;
|
||||
Ref<VisualShaderNodeColorUniform> color_uniform = vsnode;
|
||||
Ref<VisualShaderNodeBooleanUniform> bool_uniform = vsnode;
|
||||
Ref<VisualShaderNodeTransformUniform> transform_uniform = vsnode;
|
||||
@ -1583,6 +1640,8 @@ void VisualShaderEditor::_update_uniforms(bool p_update_refs) {
|
||||
uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_VECTOR2;
|
||||
} else if (vec3_uniform.is_valid()) {
|
||||
uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_VECTOR3;
|
||||
} else if (vec4_uniform.is_valid()) {
|
||||
uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_VECTOR4;
|
||||
} else if (transform_uniform.is_valid()) {
|
||||
uniform_type = VisualShaderNodeUniformRef::UniformType::UNIFORM_TYPE_TRANSFORM;
|
||||
} else if (color_uniform.is_valid()) {
|
||||
@ -1825,6 +1884,9 @@ void VisualShaderEditor::_expand_output_port(int p_node, int p_port, bool p_expa
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
type_size = 3;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
type_size = 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2682,6 +2744,9 @@ void VisualShaderEditor::_add_node(int p_idx, const Vector<Variant> &p_ops, Stri
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D:
|
||||
initial_expression_code = "output0 = vec3(1.0, 1.0, 1.0);";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D:
|
||||
initial_expression_code = "output0 = vec4(1.0, 1.0, 1.0, 1.0);";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN:
|
||||
initial_expression_code = "output0 = true;";
|
||||
break;
|
||||
@ -3237,6 +3302,25 @@ void VisualShaderEditor::_convert_constants_to_uniforms(bool p_vice_versa) {
|
||||
}
|
||||
}
|
||||
|
||||
// vec4
|
||||
if (!caught) {
|
||||
if (!p_vice_versa) {
|
||||
Ref<VisualShaderNodeVec4Constant> vec4_const = Object::cast_to<VisualShaderNodeVec4Constant>(node.ptr());
|
||||
if (vec4_const.is_valid()) {
|
||||
_replace_node(type_id, node_id, "VisualShaderNodeVec4Constant", "VisualShaderNodeVec4Uniform");
|
||||
var = vec4_const->get_constant();
|
||||
caught = true;
|
||||
}
|
||||
} else {
|
||||
Ref<VisualShaderNodeVec4Uniform> vec4_uniform = Object::cast_to<VisualShaderNodeVec4Uniform>(node.ptr());
|
||||
if (vec4_uniform.is_valid()) {
|
||||
_replace_node(type_id, node_id, "VisualShaderNodeVec4Uniform", "VisualShaderNodeVec4Constant");
|
||||
var = vec4_uniform->get_default_value();
|
||||
caught = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// color
|
||||
if (!caught) {
|
||||
if (!p_vice_versa) {
|
||||
@ -4176,6 +4260,9 @@ void VisualShaderEditor::_update_varying_tree() {
|
||||
case VisualShader::VARYING_TYPE_VECTOR_3D:
|
||||
item->set_icon(0, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector3"), SNAME("EditorIcons")));
|
||||
break;
|
||||
case VisualShader::VARYING_TYPE_VECTOR_4D:
|
||||
item->set_icon(0, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector4"), SNAME("EditorIcons")));
|
||||
break;
|
||||
case VisualShader::VARYING_TYPE_COLOR:
|
||||
item->set_icon(0, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Color"), SNAME("EditorIcons")));
|
||||
break;
|
||||
@ -4547,6 +4634,7 @@ VisualShaderEditor::VisualShaderEditor() {
|
||||
graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_TRANSFORM);
|
||||
graph->add_valid_right_disconnect_type(VisualShaderNode::PORT_TYPE_SAMPLER);
|
||||
//graph->add_valid_left_disconnect_type(0);
|
||||
@ -4567,27 +4655,44 @@ VisualShaderEditor::VisualShaderEditor() {
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_SCALAR_INT);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR, VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR_INT, VisualShaderNode::PORT_TYPE_SCALAR_INT);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR_INT, VisualShaderNode::PORT_TYPE_SCALAR);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR_INT, VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR_INT, VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR_INT, VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SCALAR_INT, VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_2D, VisualShaderNode::PORT_TYPE_SCALAR);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_2D, VisualShaderNode::PORT_TYPE_SCALAR_INT);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_2D, VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_2D, VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_2D, VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_2D, VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_3D, VisualShaderNode::PORT_TYPE_SCALAR);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_3D, VisualShaderNode::PORT_TYPE_SCALAR_INT);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_3D, VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_3D, VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_3D, VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_3D, VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_4D, VisualShaderNode::PORT_TYPE_SCALAR);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_4D, VisualShaderNode::PORT_TYPE_SCALAR_INT);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_4D, VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_4D, VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_4D, VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_VECTOR_4D, VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_SCALAR);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_SCALAR_INT);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_VECTOR_2D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_VECTOR_3D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_VECTOR_4D);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_BOOLEAN, VisualShaderNode::PORT_TYPE_BOOLEAN);
|
||||
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_TRANSFORM, VisualShaderNode::PORT_TYPE_TRANSFORM);
|
||||
graph->add_valid_connection_type(VisualShaderNode::PORT_TYPE_SAMPLER, VisualShaderNode::PORT_TYPE_SAMPLER);
|
||||
|
||||
@ -4802,6 +4907,7 @@ VisualShaderEditor::VisualShaderEditor() {
|
||||
varying_type->add_item("Float");
|
||||
varying_type->add_item("Vector2");
|
||||
varying_type->add_item("Vector3");
|
||||
varying_type->add_item("Vector4");
|
||||
varying_type->add_item("Color");
|
||||
varying_type->add_item("Transform");
|
||||
|
||||
@ -5297,137 +5403,196 @@ VisualShaderEditor::VisualShaderEditor() {
|
||||
|
||||
add_options.push_back(AddOption("VectorFunc", "Vector", "Common", "VisualShaderNodeVectorFunc", TTR("Vector function."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("VectorOp", "Vector", "Common", "VisualShaderNodeVectorOp", TTR("Vector operator."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("VectorCompose", "Vector", "Common", "VisualShaderNodeVectorCompose", TTR("Composes vector from three scalars.")));
|
||||
add_options.push_back(AddOption("VectorDecompose", "Vector", "Common", "VisualShaderNodeVectorDecompose", TTR("Decomposes vector to three scalars.")));
|
||||
add_options.push_back(AddOption("VectorCompose", "Vector", "Common", "VisualShaderNodeVectorCompose", TTR("Composes vector from scalars.")));
|
||||
add_options.push_back(AddOption("VectorDecompose", "Vector", "Common", "VisualShaderNodeVectorDecompose", TTR("Decomposes vector to scalars.")));
|
||||
|
||||
add_options.push_back(AddOption("Vector2Compose", "Vector", "Composition", "VisualShaderNodeVectorCompose", TTR("Composes 2D vector from three scalars."), { VisualShaderNodeVectorCompose::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Vector2Decompose", "Vector", "Composition", "VisualShaderNodeVectorDecompose", TTR("Decomposes 2D vector to three scalars."), { VisualShaderNodeVectorCompose::OP_TYPE_VECTOR_2D }));
|
||||
add_options.push_back(AddOption("Vector2Decompose", "Vector", "Composition", "VisualShaderNodeVectorDecompose", TTR("Decomposes 2D vector to three scalars."), { VisualShaderNodeVectorDecompose::OP_TYPE_VECTOR_2D }));
|
||||
add_options.push_back(AddOption("Vector3Compose", "Vector", "Composition", "VisualShaderNodeVectorCompose", TTR("Composes 3D vector from three scalars."), { VisualShaderNodeVectorCompose::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Vector3Decompose", "Vector", "Composition", "VisualShaderNodeVectorDecompose", TTR("Decomposes 3D vector to three scalars."), { VisualShaderNodeVectorCompose::OP_TYPE_VECTOR_3D }));
|
||||
add_options.push_back(AddOption("Vector3Decompose", "Vector", "Composition", "VisualShaderNodeVectorDecompose", TTR("Decomposes 3D vector to three scalars."), { VisualShaderNodeVectorDecompose::OP_TYPE_VECTOR_3D }));
|
||||
add_options.push_back(AddOption("Vector4DCompose", "Vector", "Composition", "VisualShaderNodeVectorCompose", TTR("Composes 4D vector from three scalars."), { VisualShaderNodeVectorCompose::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Vector4DDecompose", "Vector", "Composition", "VisualShaderNodeVectorDecompose", TTR("Decomposes 4D vector to three scalars."), { VisualShaderNodeVectorDecompose::OP_TYPE_VECTOR_4D }));
|
||||
|
||||
add_options.push_back(AddOption("Abs", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the absolute value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ABS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Abs", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the absolute value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ABS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Abs", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the absolute value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ABS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ACos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ACOS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ACos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ACOS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ACos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ACOS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ACosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ACOSH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ACosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ACOSH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ACosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ACOSH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ASin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ASIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ASin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ASIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ASin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ASIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ASinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ASINH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ASinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ASINH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ASinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ASINH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ATan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ATAN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ATan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ATAN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ATan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the arc-tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ATAN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ATan2", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the arc-tangent of the parameters."), { VisualShaderNodeVectorOp::OP_ATAN2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ATan2", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the arc-tangent of the parameters."), { VisualShaderNodeVectorOp::OP_ATAN2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ATan2", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the arc-tangent of the parameters."), { VisualShaderNodeVectorOp::OP_ATAN2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("ATanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ATANH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("ATanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ATANH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("ATanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse hyperbolic tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_ATANH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Ceil", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer that is greater than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_CEIL }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Ceil", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer that is greater than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_CEIL, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Ceil", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer that is greater than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_CEIL, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Clamp", "Vector", "Functions", "VisualShaderNodeClamp", TTR("Constrains a value to lie between two further values."), { VisualShaderNodeClamp::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Clamp", "Vector", "Functions", "VisualShaderNodeClamp", TTR("Constrains a value to lie between two further values."), { VisualShaderNodeClamp::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Clamp", "Vector", "Functions", "VisualShaderNodeClamp", TTR("Constrains a value to lie between two further values."), { VisualShaderNodeClamp::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Cos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_COS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Cos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_COS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Cos", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_COS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("CosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_COSH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("CosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_COSH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("CosH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic cosine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_COSH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Cross", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Calculates the cross product of two vectors."), { VisualShaderNodeVectorOp::OP_CROSS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Degrees", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Converts a quantity in radians to degrees."), { VisualShaderNodeVectorFunc::FUNC_DEGREES, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Degrees", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Converts a quantity in radians to degrees."), { VisualShaderNodeVectorFunc::FUNC_DEGREES, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Degrees", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Converts a quantity in radians to degrees."), { VisualShaderNodeVectorFunc::FUNC_DEGREES, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("DFdX", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Derivative in 'x' using local differencing."), { VisualShaderNodeDerivativeFunc::FUNC_X, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("DFdX", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Derivative in 'x' using local differencing."), { VisualShaderNodeDerivativeFunc::FUNC_X, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("DFdX", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Derivative in 'x' using local differencing."), { VisualShaderNodeDerivativeFunc::FUNC_X, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("DFdY", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Derivative in 'y' using local differencing."), { VisualShaderNodeDerivativeFunc::FUNC_Y, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("DFdY", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Derivative in 'y' using local differencing."), { VisualShaderNodeDerivativeFunc::FUNC_Y, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("DFdY", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Derivative in 'y' using local differencing."), { VisualShaderNodeDerivativeFunc::FUNC_Y, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("Distance2D", "Vector", "Functions", "VisualShaderNodeVectorDistance", TTR("Returns the distance between two points."), { VisualShaderNodeVectorDistance::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Distance3D", "Vector", "Functions", "VisualShaderNodeVectorDistance", TTR("Returns the distance between two points."), { VisualShaderNodeVectorDistance::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Distance4D", "Vector", "Functions", "VisualShaderNodeVectorDistance", TTR("Returns the distance between two points."), { VisualShaderNodeVectorDistance::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Dot", "Vector", "Functions", "VisualShaderNodeDotProduct", TTR("Calculates the dot product of two vectors."), {}, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Exp", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-e Exponential."), { VisualShaderNodeVectorFunc::FUNC_EXP, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Exp", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-e Exponential."), { VisualShaderNodeVectorFunc::FUNC_EXP, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Exp", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-e Exponential."), { VisualShaderNodeVectorFunc::FUNC_EXP, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Exp2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 Exponential."), { VisualShaderNodeVectorFunc::FUNC_EXP2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Exp2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 Exponential."), { VisualShaderNodeVectorFunc::FUNC_EXP2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Exp2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 Exponential."), { VisualShaderNodeVectorFunc::FUNC_EXP2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("FaceForward", "Vector", "Functions", "VisualShaderNodeFaceForward", TTR("Returns the vector that points in the same direction as a reference vector. The function has three vector parameters : N, the vector to orient, I, the incident vector, and Nref, the reference vector. If the dot product of I and Nref is smaller than zero the return value is N. Otherwise -N is returned."), { VisualShaderNodeFaceForward::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("FaceForward", "Vector", "Functions", "VisualShaderNodeFaceForward", TTR("Returns the vector that points in the same direction as a reference vector. The function has three vector parameters : N, the vector to orient, I, the incident vector, and Nref, the reference vector. If the dot product of I and Nref is smaller than zero the return value is N. Otherwise -N is returned."), { VisualShaderNodeFaceForward::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("FaceForward", "Vector", "Functions", "VisualShaderNodeFaceForward", TTR("Returns the vector that points in the same direction as a reference vector. The function has three vector parameters : N, the vector to orient, I, the incident vector, and Nref, the reference vector. If the dot product of I and Nref is smaller than zero the return value is N. Otherwise -N is returned."), { VisualShaderNodeFaceForward::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Floor", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_FLOOR, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Floor", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_FLOOR, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Floor", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer less than or equal to the parameter."), { VisualShaderNodeVectorFunc::FUNC_FLOOR, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRAC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRAC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Fract", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Computes the fractional part of the argument."), { VisualShaderNodeVectorFunc::FUNC_FRAC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Fresnel", "Vector", "Functions", "VisualShaderNodeFresnel", TTR("Returns falloff based on the dot product of surface normal and view direction of camera (pass associated inputs to it)."), {}, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("InverseSqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_INVERSE_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("InverseSqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_INVERSE_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("InverseSqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the inverse of the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_INVERSE_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Length", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Length", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Length", "Vector", "Functions", "VisualShaderNodeVectorLen", TTR("Calculates the length of a vector."), { VisualShaderNodeVectorLen::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_SCALAR));
|
||||
add_options.push_back(AddOption("Log", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Natural logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Log", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Natural logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Log", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Natural logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Log2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Log2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Log2", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Base-2 logarithm."), { VisualShaderNodeVectorFunc::FUNC_LOG2, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Max", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the greater of two values."), { VisualShaderNodeVectorOp::OP_MAX, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Max", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the greater of two values."), { VisualShaderNodeVectorOp::OP_MAX, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Max", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the greater of two values."), { VisualShaderNodeVectorOp::OP_MAX, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Min", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the lesser of two values."), { VisualShaderNodeVectorOp::OP_MIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Min", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the lesser of two values."), { VisualShaderNodeVectorOp::OP_MIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Min", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the lesser of two values."), { VisualShaderNodeVectorOp::OP_MIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Mix", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors."), { VisualShaderNodeMix::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Mix", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors."), { VisualShaderNodeMix::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Mix", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors."), { VisualShaderNodeMix::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("MixS", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors using scalar."), { VisualShaderNodeMix::OP_TYPE_VECTOR_2D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("MixS", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors using scalar."), { VisualShaderNodeMix::OP_TYPE_VECTOR_3D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("MixS", "Vector", "Functions", "VisualShaderNodeMix", TTR("Linear interpolation between two vectors using scalar."), { VisualShaderNodeMix::OP_TYPE_VECTOR_4D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("MultiplyAdd", "Vector", "Functions", "VisualShaderNodeMultiplyAdd", TTR("Performs a fused multiply-add operation (a * b + c) on vectors."), { VisualShaderNodeMultiplyAdd::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("MultiplyAdd", "Vector", "Functions", "VisualShaderNodeMultiplyAdd", TTR("Performs a fused multiply-add operation (a * b + c) on vectors."), { VisualShaderNodeMultiplyAdd::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("MultiplyAdd", "Vector", "Functions", "VisualShaderNodeMultiplyAdd", TTR("Performs a fused multiply-add operation (a * b + c) on vectors."), { VisualShaderNodeMultiplyAdd::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Negate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the opposite value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_NEGATE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Negate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the opposite value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_NEGATE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Negate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the opposite value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_NEGATE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Normalize", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Calculates the normalize product of vector."), { VisualShaderNodeVectorFunc::FUNC_NORMALIZE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Normalize", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Calculates the normalize product of vector."), { VisualShaderNodeVectorFunc::FUNC_NORMALIZE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Normalize", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Calculates the normalize product of vector."), { VisualShaderNodeVectorFunc::FUNC_NORMALIZE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("OneMinus", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("1.0 - vector"), { VisualShaderNodeVectorFunc::FUNC_ONEMINUS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("OneMinus", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("1.0 - vector"), { VisualShaderNodeVectorFunc::FUNC_ONEMINUS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("OneMinus", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("1.0 - vector"), { VisualShaderNodeVectorFunc::FUNC_ONEMINUS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Pow", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the value of the first parameter raised to the power of the second."), { VisualShaderNodeVectorOp::OP_POW, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Pow", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the value of the first parameter raised to the power of the second."), { VisualShaderNodeVectorOp::OP_POW, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Pow", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the value of the first parameter raised to the power of the second."), { VisualShaderNodeVectorOp::OP_POW, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Radians", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Converts a quantity in degrees to radians."), { VisualShaderNodeVectorFunc::FUNC_RADIANS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Radians", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Converts a quantity in degrees to radians."), { VisualShaderNodeVectorFunc::FUNC_RADIANS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Radians", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Converts a quantity in degrees to radians."), { VisualShaderNodeVectorFunc::FUNC_RADIANS, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Reciprocal", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("1.0 / vector"), { VisualShaderNodeVectorFunc::FUNC_RECIPROCAL, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Reciprocal", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("1.0 / vector"), { VisualShaderNodeVectorFunc::FUNC_RECIPROCAL, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Reciprocal", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("1.0 / vector"), { VisualShaderNodeVectorFunc::FUNC_RECIPROCAL, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Reflect", "Vector", "Functions", "VisualShaderNodeVectorOp", TTR("Returns the vector that points in the direction of reflection ( a : incident vector, b : normal vector )."), { VisualShaderNodeVectorOp::OP_REFLECT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Refract", "Vector", "Functions", "VisualShaderNodeVectorRefract", TTR("Returns the vector that points in the direction of refraction."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Round", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer to the parameter."), { VisualShaderNodeVectorFunc::FUNC_ROUND, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Round", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer to the parameter."), { VisualShaderNodeVectorFunc::FUNC_ROUND, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Round", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest integer to the parameter."), { VisualShaderNodeVectorFunc::FUNC_ROUND, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("RoundEven", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest even integer to the parameter."), { VisualShaderNodeVectorFunc::FUNC_ROUNDEVEN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("RoundEven", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest even integer to the parameter."), { VisualShaderNodeVectorFunc::FUNC_ROUNDEVEN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("RoundEven", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the nearest even integer to the parameter."), { VisualShaderNodeVectorFunc::FUNC_ROUNDEVEN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Saturate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Clamps the value between 0.0 and 1.0."), { VisualShaderNodeVectorFunc::FUNC_SATURATE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Saturate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Clamps the value between 0.0 and 1.0."), { VisualShaderNodeVectorFunc::FUNC_SATURATE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Saturate", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Clamps the value between 0.0 and 1.0."), { VisualShaderNodeVectorFunc::FUNC_SATURATE, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Sign", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Extracts the sign of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SIGN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Sign", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Extracts the sign of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SIGN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Sign", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Extracts the sign of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SIGN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Sin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Sin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Sin", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SIN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("SinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SINH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("SinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SINH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("SinH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic sine of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SINH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Sqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Sqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Sqrt", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the square root of the parameter."), { VisualShaderNodeVectorFunc::FUNC_SQRT, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("SmoothStep", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), { VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("SmoothStep", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), { VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("SmoothStep", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), { VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("SmoothStepS", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), { VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_2D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("SmoothStepS", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), { VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_3D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("SmoothStepS", "Vector", "Functions", "VisualShaderNodeSmoothStep", TTR("SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge0' and 1.0 if 'x' is larger than 'edge1'. Otherwise the return value is interpolated between 0.0 and 1.0 using Hermite polynomials."), { VisualShaderNodeSmoothStep::OP_TYPE_VECTOR_4D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Step", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( vector(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), { VisualShaderNodeStep::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Step", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( vector(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), { VisualShaderNodeStep::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("StepS", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( scalar(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), { VisualShaderNodeStep::OP_TYPE_VECTOR_2D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("StepS", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( scalar(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), { VisualShaderNodeStep::OP_TYPE_VECTOR_3D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("StepS", "Vector", "Functions", "VisualShaderNodeStep", TTR("Step function( scalar(edge), vector(x) ).\n\nReturns 0.0 if 'x' is smaller than 'edge' and otherwise 1.0."), { VisualShaderNodeStep::OP_TYPE_VECTOR_4D_SCALAR }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Sum", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and 'y'."), { VisualShaderNodeDerivativeFunc::FUNC_SUM, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("Sum", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and 'y'."), { VisualShaderNodeDerivativeFunc::FUNC_SUM, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("Sum", "Vector", "Functions", "VisualShaderNodeDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and 'y'."), { VisualShaderNodeDerivativeFunc::FUNC_SUM, VisualShaderNodeDerivativeFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D, TYPE_FLAGS_FRAGMENT | TYPE_FLAGS_LIGHT, -1, true));
|
||||
add_options.push_back(AddOption("Tan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TAN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Tan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TAN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Tan", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TAN, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("TanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TANH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("TanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TANH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("TanH", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Returns the hyperbolic tangent of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TANH, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Trunc", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the truncated value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TRUNC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Trunc", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the truncated value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TRUNC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Trunc", "Vector", "Functions", "VisualShaderNodeVectorFunc", TTR("Finds the truncated value of the parameter."), { VisualShaderNodeVectorFunc::FUNC_TRUNC, VisualShaderNodeVectorFunc::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
|
||||
add_options.push_back(AddOption("Add", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Adds 2D vector to 2D vector."), { VisualShaderNodeVectorOp::OP_ADD, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Add", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Adds 3D vector to 3D vector."), { VisualShaderNodeVectorOp::OP_ADD, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Add", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Adds 4D vector to 4D vector."), { VisualShaderNodeVectorOp::OP_ADD, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Divide", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Divides 2D vector by 2D vector."), { VisualShaderNodeVectorOp::OP_DIV, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Divide", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Divides 3D vector by 3D vector."), { VisualShaderNodeVectorOp::OP_DIV, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Divide", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Divides 4D vector by 4D vector."), { VisualShaderNodeVectorOp::OP_DIV, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Multiply", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Multiplies 2D vector by 2D vector."), { VisualShaderNodeVectorOp::OP_MUL, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Multiply", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Multiplies 3D vector by 3D vector."), { VisualShaderNodeVectorOp::OP_MUL, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Multiply", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Multiplies 4D vector by 4D vector."), { VisualShaderNodeVectorOp::OP_MUL, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Remainder", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Returns the remainder of the two 2D vectors."), { VisualShaderNodeVectorOp::OP_MOD, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Remainder", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Returns the remainder of the two 3D vectors."), { VisualShaderNodeVectorOp::OP_MOD, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Remainder", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Returns the remainder of the two 4D vectors."), { VisualShaderNodeVectorOp::OP_MOD, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Subtract", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Subtracts 2D vector from 2D vector."), { VisualShaderNodeVectorOp::OP_SUB, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_2D }, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Subtract", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Subtracts 3D vector from 3D vector."), { VisualShaderNodeVectorOp::OP_SUB, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_3D }, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Subtract", "Vector", "Operators", "VisualShaderNodeVectorOp", TTR("Subtracts 4D vector from 4D vector."), { VisualShaderNodeVectorOp::OP_SUB, VisualShaderNodeVectorOp::OP_TYPE_VECTOR_4D }, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
|
||||
add_options.push_back(AddOption("Vector2Constant", "Vector", "Variables", "VisualShaderNodeVec2Constant", TTR("2D vector constant."), {}, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Vector2Uniform", "Vector", "Variables", "VisualShaderNodeVec2Uniform", TTR("2D vector uniform."), {}, VisualShaderNode::PORT_TYPE_VECTOR_2D));
|
||||
add_options.push_back(AddOption("Vector3Constant", "Vector", "Variables", "VisualShaderNodeVec3Constant", TTR("3D vector constant."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Vector3Uniform", "Vector", "Variables", "VisualShaderNodeVec3Uniform", TTR("3D vector uniform."), {}, VisualShaderNode::PORT_TYPE_VECTOR_3D));
|
||||
add_options.push_back(AddOption("Vector4Constant", "Vector", "Variables", "VisualShaderNodeVec4Constant", TTR("4D vector constant."), {}, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
add_options.push_back(AddOption("Vector4Uniform", "Vector", "Variables", "VisualShaderNodeVec4Uniform", TTR("4D vector uniform."), {}, VisualShaderNode::PORT_TYPE_VECTOR_4D));
|
||||
|
||||
// SPECIAL
|
||||
|
||||
@ -5525,11 +5690,12 @@ public:
|
||||
|
||||
void setup(const Ref<VisualShaderNodeInput> &p_input) {
|
||||
input = p_input;
|
||||
Ref<Texture2D> type_icon[7] = {
|
||||
Ref<Texture2D> type_icon[] = {
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("float"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("int"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector2"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector3"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector4"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("bool"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Transform3D"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("ImageTexture"), SNAME("EditorIcons")),
|
||||
@ -5578,6 +5744,7 @@ public:
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("float"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector2"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector3"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector4"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Color"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Transform3D"), SNAME("EditorIcons")),
|
||||
};
|
||||
@ -5652,12 +5819,13 @@ public:
|
||||
void setup(const Ref<VisualShaderNodeUniformRef> &p_uniform_ref) {
|
||||
uniform_ref = p_uniform_ref;
|
||||
|
||||
Ref<Texture2D> type_icon[8] = {
|
||||
Ref<Texture2D> type_icon[] = {
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("float"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("int"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("bool"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector2"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector3"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Vector4"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Transform3D"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Color"), SNAME("EditorIcons")),
|
||||
EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("ImageTexture"), SNAME("EditorIcons")),
|
||||
@ -5864,6 +6032,8 @@ Control *VisualShaderNodePluginDefault::create_editor(const Ref<Resource> &p_par
|
||||
prop->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
|
||||
} else if (Object::cast_to<EditorPropertyTransform3D>(prop) || Object::cast_to<EditorPropertyVector3>(prop)) {
|
||||
prop->set_custom_minimum_size(Size2(250 * EDSCALE, 0));
|
||||
} else if (Object::cast_to<EditorPropertyQuaternion>(prop)) {
|
||||
prop->set_custom_minimum_size(Size2(320 * EDSCALE, 0));
|
||||
} else if (Object::cast_to<EditorPropertyFloat>(prop)) {
|
||||
prop->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
|
||||
} else if (Object::cast_to<EditorPropertyEnum>(prop)) {
|
||||
|
@ -85,7 +85,7 @@ private:
|
||||
List<VisualShader::Connection> connections;
|
||||
bool dirty = false;
|
||||
|
||||
Color vector_expanded_color[3];
|
||||
Color vector_expanded_color[4];
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
@ -183,7 +183,7 @@ protected:
|
||||
pinfo.type = Variant::VECTOR3;
|
||||
} break;
|
||||
case RS::GLOBAL_VAR_TYPE_VEC4: {
|
||||
pinfo.type = Variant::PLANE;
|
||||
pinfo.type = Variant::QUATERNION;
|
||||
} break;
|
||||
case RS::GLOBAL_VAR_TYPE_RECT2: {
|
||||
pinfo.type = Variant::RECT2;
|
||||
@ -304,7 +304,7 @@ static Variant create_var(RS::GlobalVariableType p_type) {
|
||||
return Vector3();
|
||||
}
|
||||
case RS::GLOBAL_VAR_TYPE_VEC4: {
|
||||
return Plane();
|
||||
return Quaternion();
|
||||
}
|
||||
case RS::GLOBAL_VAR_TYPE_RECT2: {
|
||||
return Rect2();
|
||||
|
@ -155,7 +155,7 @@ void ShaderGlobalsOverride::_get_property_list(List<PropertyInfo> *p_list) const
|
||||
pinfo.type = Variant::VECTOR3;
|
||||
} break;
|
||||
case RS::GLOBAL_VAR_TYPE_VEC4: {
|
||||
pinfo.type = Variant::PLANE;
|
||||
pinfo.type = Variant::QUATERNION;
|
||||
} break;
|
||||
case RS::GLOBAL_VAR_TYPE_RECT2: {
|
||||
pinfo.type = Variant::RECT2;
|
||||
|
@ -576,6 +576,7 @@ void register_scene_types() {
|
||||
GDREGISTER_CLASS(VisualShaderNodeColorConstant);
|
||||
GDREGISTER_CLASS(VisualShaderNodeVec2Constant);
|
||||
GDREGISTER_CLASS(VisualShaderNodeVec3Constant);
|
||||
GDREGISTER_CLASS(VisualShaderNodeVec4Constant);
|
||||
GDREGISTER_CLASS(VisualShaderNodeTransformConstant);
|
||||
GDREGISTER_CLASS(VisualShaderNodeFloatOp);
|
||||
GDREGISTER_CLASS(VisualShaderNodeIntOp);
|
||||
@ -620,6 +621,7 @@ void register_scene_types() {
|
||||
GDREGISTER_CLASS(VisualShaderNodeColorUniform);
|
||||
GDREGISTER_CLASS(VisualShaderNodeVec2Uniform);
|
||||
GDREGISTER_CLASS(VisualShaderNodeVec3Uniform);
|
||||
GDREGISTER_CLASS(VisualShaderNodeVec4Uniform);
|
||||
GDREGISTER_CLASS(VisualShaderNodeTransformUniform);
|
||||
GDREGISTER_CLASS(VisualShaderNodeTextureUniform);
|
||||
GDREGISTER_CLASS(VisualShaderNodeTextureUniformTriplanar);
|
||||
|
@ -74,6 +74,10 @@ void VisualShaderNode::set_input_port_default_value(int p_port, const Variant &p
|
||||
Vector3 pv = p_prev_value;
|
||||
value = pv.x;
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
Quaternion pv = p_prev_value;
|
||||
value = pv.x;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -94,6 +98,10 @@ void VisualShaderNode::set_input_port_default_value(int p_port, const Variant &p
|
||||
Vector3 pv = p_prev_value;
|
||||
value = (int)pv.x;
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
Quaternion pv = p_prev_value;
|
||||
value = (int)pv.x;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -115,6 +123,10 @@ void VisualShaderNode::set_input_port_default_value(int p_port, const Variant &p
|
||||
Vector3 pv = p_prev_value;
|
||||
value = Vector2(pv.x, pv.y);
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
Quaternion pv = p_prev_value;
|
||||
value = Vector2(pv.x, pv.y);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -136,6 +148,35 @@ void VisualShaderNode::set_input_port_default_value(int p_port, const Variant &p
|
||||
case Variant::VECTOR3: {
|
||||
value = p_prev_value;
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
Quaternion pv = p_prev_value;
|
||||
value = Vector3(pv.x, pv.y, pv.z);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
switch (p_prev_value.get_type()) {
|
||||
case Variant::INT: {
|
||||
float pv = (float)(int)p_prev_value;
|
||||
value = Quaternion(pv, pv, pv, pv);
|
||||
} break;
|
||||
case Variant::FLOAT: {
|
||||
float pv = p_prev_value;
|
||||
value = Quaternion(pv, pv, pv, pv);
|
||||
} break;
|
||||
case Variant::VECTOR2: {
|
||||
Vector2 pv = p_prev_value;
|
||||
value = Quaternion(pv.x, pv.y, pv.y, pv.y);
|
||||
} break;
|
||||
case Variant::VECTOR3: {
|
||||
Vector3 pv = p_prev_value;
|
||||
value = Quaternion(pv.x, pv.y, pv.z, pv.z);
|
||||
} break;
|
||||
case Variant::QUATERNION: {
|
||||
value = p_prev_value;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -253,6 +294,9 @@ int VisualShaderNode::get_expanded_output_port_count() const {
|
||||
case PORT_TYPE_VECTOR_3D: {
|
||||
count2 += 3;
|
||||
} break;
|
||||
case PORT_TYPE_VECTOR_4D: {
|
||||
count2 += 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -360,6 +404,7 @@ void VisualShaderNode::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_SCALAR_INT);
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_BOOLEAN);
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_TRANSFORM);
|
||||
BIND_ENUM_CONSTANT(PORT_TYPE_SAMPLER);
|
||||
@ -1203,6 +1248,9 @@ String VisualShader::generate_preview_shader(Type p_type, int p_node, int p_port
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
code += " COLOR.rgb = n_out" + itos(p_node) + "p" + itos(p_port) + ";\n";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
code += " COLOR.rgb = n_out" + itos(p_node) + "p" + itos(p_port) + ".xyz;\n";
|
||||
} break;
|
||||
default: {
|
||||
code += " COLOR.rgb = vec3(0.0);\n";
|
||||
} break;
|
||||
@ -1687,11 +1735,14 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
inputs[i] = "(" + src_var + " ? 1.0 : 0.0)";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_2D: {
|
||||
inputs[i] = "dot(" + src_var + ", vec2(0.333333, 0.333333))";
|
||||
inputs[i] = "dot(" + src_var + ", vec2(0.5, 0.5))";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
inputs[i] = "dot(" + src_var + ", vec3(0.333333, 0.333333, 0.333333))";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
inputs[i] = "dot(" + src_var + ", vec4(0.25, 0.25, 0.25, 0.25))";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1705,11 +1756,14 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
inputs[i] = "(" + src_var + " ? 1 : 0)";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_2D: {
|
||||
inputs[i] = "dot(float(" + src_var + "), vec2(0.333333, 0.333333))";
|
||||
inputs[i] = "dot(float(" + src_var + "), vec2(0.5, 0.5))";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
inputs[i] = "dot(float(" + src_var + "), vec3(0.333333, 0.333333, 0.333333))";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
inputs[i] = "dot(float(" + src_var + "), vec4(0.25, 0.25, 0.25, 0.25))";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1728,6 +1782,9 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
inputs[i] = "all(bvec3(" + src_var + "))";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
inputs[i] = "all(bvec4(" + src_var + "))";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1743,7 +1800,8 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN: {
|
||||
inputs[i] = "vec2(" + src_var + " ? 1.0 : 0.0)";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D:
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
inputs[i] = "vec2(" + src_var + ".xy)";
|
||||
} break;
|
||||
default:
|
||||
@ -1765,6 +1823,30 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_2D: {
|
||||
inputs[i] = "vec3(" + src_var + ", 0.0)";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
inputs[i] = "vec3(" + src_var + ".xyz)";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
switch (out_type) {
|
||||
case VisualShaderNode::PORT_TYPE_SCALAR: {
|
||||
inputs[i] = "vec4(" + src_var + ")";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_SCALAR_INT: {
|
||||
inputs[i] = "vec4(float(" + src_var + "))";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN: {
|
||||
inputs[i] = "vec4(" + src_var + " ? 1.0 : 0.0)";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_2D: {
|
||||
inputs[i] = "vec4(" + src_var + ", 0.0, 0.0)";
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
inputs[i] = "vec4(" + src_var + ", 0.0)";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1799,6 +1881,10 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
Vector3 val = defval;
|
||||
inputs[i] = "n_in" + itos(node) + "p" + itos(i);
|
||||
node_code += " vec3 " + inputs[i] + " = " + vformat("vec3(%.5f, %.5f, %.5f);\n", val.x, val.y, val.z);
|
||||
} else if (defval.get_type() == Variant::QUATERNION) {
|
||||
Quaternion val = defval;
|
||||
inputs[i] = "n_in" + itos(node) + "p" + itos(i);
|
||||
node_code += " vec4 " + inputs[i] + " = " + vformat("vec4(%.5f, %.5f, %.5f, %.5f);\n", val.x, val.y, val.z, val.w);
|
||||
} else if (defval.get_type() == Variant::TRANSFORM3D) {
|
||||
Transform3D val = defval;
|
||||
val.basis.transpose();
|
||||
@ -1838,6 +1924,9 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
output_count += 3;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
output_count += 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1865,6 +1954,9 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D:
|
||||
outputs[i] = "vec3 " + var_name;
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D:
|
||||
outputs[i] = "vec4 " + var_name;
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN:
|
||||
outputs[i] = "bool " + var_name;
|
||||
break;
|
||||
@ -1882,6 +1974,9 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
j += 3;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
j += 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1904,6 +1999,9 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D:
|
||||
code += " vec3 " + outputs[i] + ";\n";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D:
|
||||
code += " vec4 " + outputs[i] + ";\n";
|
||||
break;
|
||||
case VisualShaderNode::PORT_TYPE_BOOLEAN:
|
||||
code += " bool " + outputs[i] + ";\n";
|
||||
break;
|
||||
@ -1921,6 +2019,9 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_3D: {
|
||||
j += 3;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
j += 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1995,6 +2096,49 @@ Error VisualShader::_write_node(Type type, StringBuilder *global_code, StringBui
|
||||
|
||||
i += 3;
|
||||
} break;
|
||||
case VisualShaderNode::PORT_TYPE_VECTOR_4D: {
|
||||
if (vsnode->is_output_port_connected(i + 1) || (for_preview && vsnode->get_output_port_for_preview() == (i + 1))) { // red-component
|
||||
if (!new_line_inserted) {
|
||||
code += "\n";
|
||||
new_line_inserted = true;
|
||||
}
|
||||
String r = "n_out" + itos(node) + "p" + itos(i + 1);
|
||||
code += " float " + r + " = n_out" + itos(node) + "p" + itos(i) + ".r;\n";
|
||||
outputs[i + 1] = r;
|
||||
}
|
||||
|
||||
if (vsnode->is_output_port_connected(i + 2) || (for_preview && vsnode->get_output_port_for_preview() == (i + 2))) { // green-component
|
||||
if (!new_line_inserted) {
|
||||
code += "\n";
|
||||
new_line_inserted = true;
|
||||
}
|
||||
String g = "n_out" + itos(node) + "p" + itos(i + 2);
|
||||
code += " float " + g + " = n_out" + itos(node) + "p" + itos(i) + ".g;\n";
|
||||
outputs[i + 2] = g;
|
||||
}
|
||||
|
||||
if (vsnode->is_output_port_connected(i + 3) || (for_preview && vsnode->get_output_port_for_preview() == (i + 3))) { // blue-component
|
||||
if (!new_line_inserted) {
|
||||
code += "\n";
|
||||
new_line_inserted = true;
|
||||
}
|
||||
String b = "n_out" + itos(node) + "p" + itos(i + 3);
|
||||
code += " float " + b + " = n_out" + itos(node) + "p" + itos(i) + ".b;\n";
|
||||
outputs[i + 3] = b;
|
||||
}
|
||||
|
||||
if (vsnode->is_output_port_connected(i + 4) || (for_preview && vsnode->get_output_port_for_preview() == (i + 4))) { // alpha-component
|
||||
if (!new_line_inserted) {
|
||||
code += "\n";
|
||||
new_line_inserted = true;
|
||||
}
|
||||
String b = "n_out" + itos(node) + "p" + itos(i + 3);
|
||||
code += " float " + b + " = n_out" + itos(node) + "p" + itos(i) + ".a;\n";
|
||||
outputs[i + 4] = b;
|
||||
}
|
||||
|
||||
i += 4;
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2147,6 +2291,9 @@ void VisualShader::_update_shader() const {
|
||||
case VaryingType::VARYING_TYPE_VECTOR_3D:
|
||||
global_code += "vec3 ";
|
||||
break;
|
||||
case VaryingType::VARYING_TYPE_VECTOR_4D:
|
||||
global_code += "vec4 ";
|
||||
break;
|
||||
case VaryingType::VARYING_TYPE_COLOR:
|
||||
global_code += "vec4 ";
|
||||
break;
|
||||
@ -2207,6 +2354,9 @@ void VisualShader::_update_shader() const {
|
||||
case VaryingType::VARYING_TYPE_VECTOR_3D:
|
||||
code2 += "vec3(0.0)";
|
||||
break;
|
||||
case VaryingType::VARYING_TYPE_VECTOR_4D:
|
||||
code2 += "vec4(0.0)";
|
||||
break;
|
||||
case VaryingType::VARYING_TYPE_COLOR:
|
||||
code2 += "vec4(0.0)";
|
||||
break;
|
||||
@ -2527,6 +2677,7 @@ void VisualShader::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_FLOAT);
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_COLOR);
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_TRANSFORM);
|
||||
BIND_ENUM_CONSTANT(VARYING_TYPE_MAX);
|
||||
@ -2970,6 +3121,9 @@ String VisualShaderNodeInput::generate_code(Shader::Mode p_mode, VisualShader::T
|
||||
case PORT_TYPE_VECTOR_3D: {
|
||||
code = " " + p_output_vars[0] + " = vec3(0.0);\n";
|
||||
} break;
|
||||
case PORT_TYPE_VECTOR_4D: {
|
||||
code = " " + p_output_vars[0] + " = vec4(0.0);\n";
|
||||
} break;
|
||||
case PORT_TYPE_BOOLEAN: {
|
||||
code = " " + p_output_vars[0] + " = false;\n";
|
||||
} break;
|
||||
@ -3186,6 +3340,8 @@ int VisualShaderNodeUniformRef::get_output_port_count() const {
|
||||
return 1;
|
||||
case UniformType::UNIFORM_TYPE_VECTOR3:
|
||||
return 1;
|
||||
case UniformType::UNIFORM_TYPE_VECTOR4:
|
||||
return 1;
|
||||
case UniformType::UNIFORM_TYPE_TRANSFORM:
|
||||
return 1;
|
||||
case UniformType::UNIFORM_TYPE_COLOR:
|
||||
@ -3210,6 +3366,8 @@ VisualShaderNodeUniformRef::PortType VisualShaderNodeUniformRef::get_output_port
|
||||
return PortType::PORT_TYPE_VECTOR_2D;
|
||||
case UniformType::UNIFORM_TYPE_VECTOR3:
|
||||
return PortType::PORT_TYPE_VECTOR_3D;
|
||||
case UniformType::UNIFORM_TYPE_VECTOR4:
|
||||
return PortType::PORT_TYPE_VECTOR_4D;
|
||||
case UniformType::UNIFORM_TYPE_TRANSFORM:
|
||||
return PortType::PORT_TYPE_TRANSFORM;
|
||||
case UniformType::UNIFORM_TYPE_COLOR:
|
||||
@ -3239,6 +3397,8 @@ String VisualShaderNodeUniformRef::get_output_port_name(int p_port) const {
|
||||
return "";
|
||||
case UniformType::UNIFORM_TYPE_VECTOR3:
|
||||
return "";
|
||||
case UniformType::UNIFORM_TYPE_VECTOR4:
|
||||
return "";
|
||||
case UniformType::UNIFORM_TYPE_TRANSFORM:
|
||||
return "";
|
||||
case UniformType::UNIFORM_TYPE_COLOR:
|
||||
@ -3311,6 +3471,8 @@ VisualShaderNodeUniformRef::PortType VisualShaderNodeUniformRef::get_port_type_b
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case UniformType::UNIFORM_TYPE_VECTOR3:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case UniformType::UNIFORM_TYPE_VECTOR4:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case UniformType::UNIFORM_TYPE_TRANSFORM:
|
||||
return PORT_TYPE_TRANSFORM;
|
||||
case UniformType::UNIFORM_TYPE_COLOR:
|
||||
@ -3697,6 +3859,11 @@ String VisualShaderNodeUniform::get_warning(Shader::Mode p_mode, VisualShader::T
|
||||
incompatible_type = true;
|
||||
}
|
||||
} break;
|
||||
case RS::GLOBAL_VAR_TYPE_VEC4: {
|
||||
if (!Object::cast_to<VisualShaderNodeVec4Uniform>(this)) {
|
||||
incompatible_type = true;
|
||||
}
|
||||
} break;
|
||||
case RS::GLOBAL_VAR_TYPE_TRANSFORM: {
|
||||
if (!Object::cast_to<VisualShaderNodeTransformUniform>(this)) {
|
||||
incompatible_type = true;
|
||||
@ -4404,6 +4571,9 @@ String VisualShaderNodeExpression::generate_code(Shader::Mode p_mode, VisualShad
|
||||
case PORT_TYPE_VECTOR_3D:
|
||||
tk = "vec3(0.0, 0.0, 0.0)";
|
||||
break;
|
||||
case PORT_TYPE_VECTOR_4D:
|
||||
tk = "vec4(0.0, 0.0, 0.0, 0.0)";
|
||||
break;
|
||||
case PORT_TYPE_BOOLEAN:
|
||||
tk = "false";
|
||||
break;
|
||||
@ -4542,6 +4712,8 @@ String VisualShaderNodeVarying::get_type_str() const {
|
||||
return "vec2";
|
||||
case VisualShader::VARYING_TYPE_VECTOR_3D:
|
||||
return "vec3";
|
||||
case VisualShader::VARYING_TYPE_VECTOR_4D:
|
||||
return "vec4";
|
||||
case VisualShader::VARYING_TYPE_COLOR:
|
||||
return "vec4";
|
||||
case VisualShader::VARYING_TYPE_TRANSFORM:
|
||||
@ -4558,6 +4730,8 @@ VisualShaderNodeVarying::PortType VisualShaderNodeVarying::get_port_type(VisualS
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case VisualShader::VARYING_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case VisualShader::VARYING_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case VisualShader::VARYING_TYPE_COLOR:
|
||||
if (p_port == 1) {
|
||||
break; // scalar
|
||||
@ -4718,6 +4892,9 @@ String VisualShaderNodeVaryingGetter::generate_code(Shader::Mode p_mode, VisualS
|
||||
case VisualShader::VARYING_TYPE_VECTOR_3D:
|
||||
from = "vec3(0.0)";
|
||||
break;
|
||||
case VisualShader::VARYING_TYPE_VECTOR_4D:
|
||||
from = "vec4(0.0)";
|
||||
break;
|
||||
case VisualShader::VARYING_TYPE_COLOR:
|
||||
from = "vec3(0.0)";
|
||||
from2 = "0.0";
|
||||
|
@ -83,6 +83,7 @@ public:
|
||||
VARYING_TYPE_FLOAT,
|
||||
VARYING_TYPE_VECTOR_2D,
|
||||
VARYING_TYPE_VECTOR_3D,
|
||||
VARYING_TYPE_VECTOR_4D,
|
||||
VARYING_TYPE_COLOR,
|
||||
VARYING_TYPE_TRANSFORM,
|
||||
VARYING_TYPE_MAX,
|
||||
@ -271,6 +272,7 @@ public:
|
||||
PORT_TYPE_SCALAR_INT,
|
||||
PORT_TYPE_VECTOR_2D,
|
||||
PORT_TYPE_VECTOR_3D,
|
||||
PORT_TYPE_VECTOR_4D,
|
||||
PORT_TYPE_BOOLEAN,
|
||||
PORT_TYPE_TRANSFORM,
|
||||
PORT_TYPE_SAMPLER,
|
||||
@ -556,6 +558,7 @@ public:
|
||||
UNIFORM_TYPE_BOOLEAN,
|
||||
UNIFORM_TYPE_VECTOR2,
|
||||
UNIFORM_TYPE_VECTOR3,
|
||||
UNIFORM_TYPE_VECTOR4,
|
||||
UNIFORM_TYPE_TRANSFORM,
|
||||
UNIFORM_TYPE_COLOR,
|
||||
UNIFORM_TYPE_SAMPLER,
|
||||
|
@ -38,6 +38,8 @@ VisualShaderNodeVectorBase::PortType VisualShaderNodeVectorBase::get_input_port_
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -50,6 +52,8 @@ VisualShaderNodeVectorBase::PortType VisualShaderNodeVectorBase::get_output_port
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -73,10 +77,11 @@ void VisualShaderNodeVectorBase::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "type"), &VisualShaderNodeVectorBase::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeVectorBase::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Vector2,Vector3"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Vector2,Vector3,Vector4"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
}
|
||||
|
||||
@ -477,6 +482,68 @@ void VisualShaderNodeVec3Constant::_bind_methods() {
|
||||
VisualShaderNodeVec3Constant::VisualShaderNodeVec3Constant() {
|
||||
}
|
||||
|
||||
////////////// Vector4
|
||||
|
||||
String VisualShaderNodeVec4Constant::get_caption() const {
|
||||
return "Vector4Constant";
|
||||
}
|
||||
|
||||
int VisualShaderNodeVec4Constant::get_input_port_count() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
VisualShaderNodeVec4Constant::PortType VisualShaderNodeVec4Constant::get_input_port_type(int p_port) const {
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Constant::get_input_port_name(int p_port) const {
|
||||
return String();
|
||||
}
|
||||
|
||||
int VisualShaderNodeVec4Constant::get_output_port_count() const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
VisualShaderNodeVec4Constant::PortType VisualShaderNodeVec4Constant::get_output_port_type(int p_port) const {
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Constant::get_output_port_name(int p_port) const {
|
||||
return ""; // No output port means the editor will be used as port.
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Constant::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) const {
|
||||
return " " + p_output_vars[0] + " = " + vformat("vec4(%.6f, %.6f, %.6f, %.6f)", constant.x, constant.y, constant.z, constant.w) + ";\n";
|
||||
}
|
||||
|
||||
void VisualShaderNodeVec4Constant::set_constant(const Quaternion &p_constant) {
|
||||
if (constant.is_equal_approx(p_constant)) {
|
||||
return;
|
||||
}
|
||||
constant = p_constant;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
Quaternion VisualShaderNodeVec4Constant::get_constant() const {
|
||||
return constant;
|
||||
}
|
||||
|
||||
Vector<StringName> VisualShaderNodeVec4Constant::get_editable_properties() const {
|
||||
Vector<StringName> props;
|
||||
props.push_back("constant");
|
||||
return props;
|
||||
}
|
||||
|
||||
void VisualShaderNodeVec4Constant::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_constant", "constant"), &VisualShaderNodeVec4Constant::set_constant);
|
||||
ClassDB::bind_method(D_METHOD("get_constant"), &VisualShaderNodeVec4Constant::get_constant);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::QUATERNION, "constant"), "set_constant", "get_constant");
|
||||
}
|
||||
|
||||
VisualShaderNodeVec4Constant::VisualShaderNodeVec4Constant() {
|
||||
}
|
||||
|
||||
////////////// Transform3D
|
||||
|
||||
String VisualShaderNodeTransformConstant::get_caption() const {
|
||||
@ -1891,8 +1958,10 @@ String VisualShaderNodeVectorOp::generate_code(Shader::Mode p_mode, VisualShader
|
||||
code += "min(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_CROSS:
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // not supported
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // Not supported.
|
||||
code += "vec2(0.0);\n";
|
||||
} else if (op_type == OP_TYPE_VECTOR_4D) { // Not supported.
|
||||
code += "vec4(0.0);\n";
|
||||
} else {
|
||||
code += "cross(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
}
|
||||
@ -1901,8 +1970,10 @@ String VisualShaderNodeVectorOp::generate_code(Shader::Mode p_mode, VisualShader
|
||||
code += "atan(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
break;
|
||||
case OP_REFLECT:
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // not supported
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // Not supported.
|
||||
code += "vec2(0.0);\n";
|
||||
} else if (op_type == OP_TYPE_VECTOR_4D) { // Not supported.
|
||||
code += "vec4(0.0);\n";
|
||||
} else {
|
||||
code += "reflect(" + p_input_vars[0] + ", " + p_input_vars[1] + ");\n";
|
||||
}
|
||||
@ -1931,6 +2002,10 @@ void VisualShaderNodeVectorOp::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(0, Vector3(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1960,7 +2035,7 @@ Vector<StringName> VisualShaderNodeVectorOp::get_editable_properties() const {
|
||||
String VisualShaderNodeVectorOp::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
|
||||
bool invalid_type = false;
|
||||
|
||||
if (op_type == OP_TYPE_VECTOR_2D) {
|
||||
if (op_type == OP_TYPE_VECTOR_2D || op_type == OP_TYPE_VECTOR_4D) {
|
||||
if (op == OP_CROSS || op == OP_REFLECT) {
|
||||
invalid_type = true;
|
||||
}
|
||||
@ -2004,6 +2079,10 @@ VisualShaderNodeVectorOp::VisualShaderNodeVectorOp() {
|
||||
set_input_port_default_value(0, Vector3());
|
||||
set_input_port_default_value(1, Vector3());
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion());
|
||||
set_input_port_default_value(1, Quaternion());
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2636,8 +2715,10 @@ String VisualShaderNodeVectorFunc::generate_code(Shader::Mode p_mode, VisualShad
|
||||
|
||||
if (op_type == OP_TYPE_VECTOR_2D) {
|
||||
code = "max(min($, vec2(1.0)), vec2(0.0))";
|
||||
} else {
|
||||
} else if (op_type == OP_TYPE_VECTOR_3D) {
|
||||
code = "max(min($, vec3(1.0)), vec3(0.0))";
|
||||
} else {
|
||||
code = "max(min($, vec4(1.0)), vec4(0.0))";
|
||||
}
|
||||
return " " + p_output_vars[0] + " = " + code.replace("$", p_input_vars[0]) + ";\n";
|
||||
}
|
||||
@ -2646,9 +2727,11 @@ String VisualShaderNodeVectorFunc::generate_code(Shader::Mode p_mode, VisualShad
|
||||
String code;
|
||||
|
||||
if (op_type == OP_TYPE_VECTOR_2D) {
|
||||
code = "vec2(1.0, 1.0) - $";
|
||||
code = "vec2(1.0) - $";
|
||||
} else if (op_type == OP_TYPE_VECTOR_3D) {
|
||||
code = "vec3(1.0) - $";
|
||||
} else {
|
||||
code = "vec3(1.0, 1.0, 1.0) - $";
|
||||
code = "vec4(1.0) - $";
|
||||
}
|
||||
return " " + p_output_vars[0] + " = " + code.replace("$", p_input_vars[0]) + ";\n";
|
||||
}
|
||||
@ -2656,9 +2739,12 @@ String VisualShaderNodeVectorFunc::generate_code(Shader::Mode p_mode, VisualShad
|
||||
String code;
|
||||
|
||||
if (func == FUNC_RGB2HSV) {
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // not supported
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // Not supported.
|
||||
return " " + p_output_vars[0] + " = vec2(0.0);\n";
|
||||
}
|
||||
if (op_type == OP_TYPE_VECTOR_4D) { // Not supported.
|
||||
return " " + p_output_vars[0] + " = vec4(0.0);\n";
|
||||
}
|
||||
code += " {\n";
|
||||
code += " vec3 c = " + p_input_vars[0] + ";\n";
|
||||
code += " vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n";
|
||||
@ -2669,9 +2755,12 @@ String VisualShaderNodeVectorFunc::generate_code(Shader::Mode p_mode, VisualShad
|
||||
code += " " + p_output_vars[0] + " = vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n";
|
||||
code += " }\n";
|
||||
} else if (func == FUNC_HSV2RGB) {
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // not supported
|
||||
if (op_type == OP_TYPE_VECTOR_2D) { // Not supported.
|
||||
return " " + p_output_vars[0] + " = vec2(0.0);\n";
|
||||
}
|
||||
if (op_type == OP_TYPE_VECTOR_4D) { // Not supported.
|
||||
return " " + p_output_vars[0] + " = vec4(0.0);\n";
|
||||
}
|
||||
code += " {\n";
|
||||
code += " vec3 c = " + p_input_vars[0] + ";\n";
|
||||
code += " vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n";
|
||||
@ -2698,6 +2787,9 @@ void VisualShaderNodeVectorFunc::set_op_type(OpType p_op_type) {
|
||||
case OP_TYPE_VECTOR_3D: {
|
||||
set_input_port_default_value(0, Vector3(), get_input_port_default_value(0));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2734,7 +2826,7 @@ Vector<StringName> VisualShaderNodeVectorFunc::get_editable_properties() const {
|
||||
String VisualShaderNodeVectorFunc::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
|
||||
bool invalid_type = false;
|
||||
|
||||
if (op_type == OP_TYPE_VECTOR_2D) {
|
||||
if (op_type == OP_TYPE_VECTOR_2D || op_type == OP_TYPE_VECTOR_4D) {
|
||||
if (func == FUNC_RGB2HSV || func == FUNC_HSV2RGB) {
|
||||
invalid_type = true;
|
||||
}
|
||||
@ -2799,6 +2891,9 @@ VisualShaderNodeVectorFunc::VisualShaderNodeVectorFunc() {
|
||||
case OP_TYPE_VECTOR_3D: {
|
||||
set_input_port_default_value(0, Vector3());
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion());
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3189,6 +3284,9 @@ void VisualShaderNodeVectorLen::set_op_type(OpType p_op_type) {
|
||||
case OP_TYPE_VECTOR_3D: {
|
||||
set_input_port_default_value(0, Vector3(), get_input_port_default_value(0));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3258,6 +3356,8 @@ VisualShaderNodeDerivativeFunc::PortType VisualShaderNodeDerivativeFunc::get_inp
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3278,6 +3378,8 @@ VisualShaderNodeDerivativeFunc::PortType VisualShaderNodeDerivativeFunc::get_out
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3315,6 +3417,9 @@ void VisualShaderNodeDerivativeFunc::set_op_type(OpType p_op_type) {
|
||||
case OP_TYPE_VECTOR_3D: {
|
||||
set_input_port_default_value(0, Vector3(), get_input_port_default_value(0));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3353,12 +3458,13 @@ void VisualShaderNodeDerivativeFunc::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_function", "func"), &VisualShaderNodeDerivativeFunc::set_function);
|
||||
ClassDB::bind_method(D_METHOD("get_function"), &VisualShaderNodeDerivativeFunc::get_function);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector3"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector3,Vector4"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "function", PROPERTY_HINT_ENUM, "Sum,X,Y"), "set_function", "get_function");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(FUNC_SUM);
|
||||
@ -3389,6 +3495,8 @@ VisualShaderNodeClamp::PortType VisualShaderNodeClamp::get_input_port_type(int p
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3418,6 +3526,8 @@ VisualShaderNodeClamp::PortType VisualShaderNodeClamp::get_output_port_type(int
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3458,6 +3568,11 @@ void VisualShaderNodeClamp::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Vector3(), get_input_port_default_value(2));
|
||||
break;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Quaternion(), get_input_port_default_value(2));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3479,12 +3594,13 @@ void VisualShaderNodeClamp::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "op_type"), &VisualShaderNodeClamp::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeClamp::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Float,Int,Vector2,Vector3"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Float,Int,Vector2,Vector3,Vector4"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_FLOAT);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_INT);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
}
|
||||
|
||||
@ -3541,6 +3657,11 @@ void VisualShaderNodeFaceForward::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Vector3(), get_input_port_default_value(2));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Quaternion(), get_input_port_default_value(2));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3630,6 +3751,13 @@ VisualShaderNodeStep::PortType VisualShaderNodeStep::get_input_port_type(int p_p
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
}
|
||||
break;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
if (p_port == 1) {
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3660,6 +3788,10 @@ VisualShaderNodeStep::PortType VisualShaderNodeStep::get_output_port_type(int p_
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_3D_SCALAR:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3696,6 +3828,14 @@ void VisualShaderNodeStep::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(0, 0.0, get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR: {
|
||||
set_input_port_default_value(0, 0.0, get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3721,13 +3861,15 @@ void VisualShaderNodeStep::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "op_type"), &VisualShaderNodeStep::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeStep::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar,Vector4,Vector4Scalar"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
}
|
||||
|
||||
@ -3762,6 +3904,13 @@ VisualShaderNodeSmoothStep::PortType VisualShaderNodeSmoothStep::get_input_port_
|
||||
return PORT_TYPE_VECTOR_3D; // x
|
||||
}
|
||||
break;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
if (p_port == 2) {
|
||||
return PORT_TYPE_VECTOR_4D; // x
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3794,6 +3943,10 @@ VisualShaderNodeSmoothStep::PortType VisualShaderNodeSmoothStep::get_output_port
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_3D_SCALAR:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3835,6 +3988,16 @@ void VisualShaderNodeSmoothStep::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, 0.0, get_input_port_default_value(1)); // edge1
|
||||
set_input_port_default_value(2, Vector3(), get_input_port_default_value(2)); // x
|
||||
break;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0)); // edge0
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1)); // edge1
|
||||
set_input_port_default_value(2, Quaternion(), get_input_port_default_value(2)); // x
|
||||
break;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
set_input_port_default_value(0, 0.0, get_input_port_default_value(0)); // edge0
|
||||
set_input_port_default_value(1, 0.0, get_input_port_default_value(1)); // edge1
|
||||
set_input_port_default_value(2, Quaternion(), get_input_port_default_value(2)); // x
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3860,13 +4023,15 @@ void VisualShaderNodeSmoothStep::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "op_type"), &VisualShaderNodeSmoothStep::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeSmoothStep::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar,Vector4,Vector4Scalar"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
}
|
||||
|
||||
@ -3922,6 +4087,10 @@ void VisualShaderNodeVectorDistance::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(0, Vector3(), get_input_port_default_value(0)); // a
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1)); // b
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0)); // a
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1)); // b
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4016,6 +4185,13 @@ VisualShaderNodeMix::PortType VisualShaderNodeMix::get_input_port_type(int p_por
|
||||
break;
|
||||
}
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
if (p_port == 2) {
|
||||
break;
|
||||
}
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4046,6 +4222,10 @@ VisualShaderNodeMix::PortType VisualShaderNodeMix::get_output_port_type(int p_po
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_3D_SCALAR:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4087,6 +4267,16 @@ void VisualShaderNodeMix::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1)); // b
|
||||
set_input_port_default_value(2, 0.0, get_input_port_default_value(2)); // weight
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0)); // a
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1)); // b
|
||||
set_input_port_default_value(2, Quaternion(), get_input_port_default_value(2)); // weight
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D_SCALAR: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0)); // a
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1)); // b
|
||||
set_input_port_default_value(2, 0.0, get_input_port_default_value(2)); // weight
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4112,13 +4302,15 @@ void VisualShaderNodeMix::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "op_type"), &VisualShaderNodeMix::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeMix::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar,Vector4,Vector4Scalar"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
}
|
||||
|
||||
@ -4140,6 +4332,8 @@ int VisualShaderNodeVectorCompose::get_input_port_count() const {
|
||||
return 2;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return 3;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return 4;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4170,6 +4364,18 @@ String VisualShaderNodeVectorCompose::get_input_port_name(int p_port) const {
|
||||
return "z";
|
||||
}
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
switch (p_port) {
|
||||
case 0:
|
||||
return "x";
|
||||
case 1:
|
||||
return "y";
|
||||
case 2:
|
||||
return "z";
|
||||
case 3:
|
||||
return "w";
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4205,6 +4411,15 @@ void VisualShaderNodeVectorCompose::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, p2);
|
||||
set_input_port_default_value(2, 0.0);
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
float p1 = get_input_port_default_value(0);
|
||||
float p2 = get_input_port_default_value(1);
|
||||
|
||||
set_input_port_default_value(0, p1);
|
||||
set_input_port_default_value(1, p2);
|
||||
set_input_port_default_value(2, 0.0);
|
||||
set_input_port_default_value(3, 0.0);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4221,6 +4436,9 @@ String VisualShaderNodeVectorCompose::generate_code(Shader::Mode p_mode, VisualS
|
||||
case OP_TYPE_VECTOR_3D: {
|
||||
code += " " + p_output_vars[0] + " = vec3(" + p_input_vars[0] + ", " + p_input_vars[1] + ", " + p_input_vars[2] + ");\n";
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
code += " " + p_output_vars[0] + " = vec4(" + p_input_vars[0] + ", " + p_input_vars[1] + ", " + p_input_vars[2] + ", " + p_input_vars[3] + ");\n";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4301,6 +4519,8 @@ int VisualShaderNodeVectorDecompose::get_output_port_count() const {
|
||||
return 2;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return 3;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return 4;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4331,6 +4551,18 @@ String VisualShaderNodeVectorDecompose::get_output_port_name(int p_port) const {
|
||||
return "z";
|
||||
}
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
switch (p_port) {
|
||||
case 0:
|
||||
return "x";
|
||||
case 1:
|
||||
return "y";
|
||||
case 2:
|
||||
return "z";
|
||||
case 3:
|
||||
return "w";
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4349,6 +4581,9 @@ void VisualShaderNodeVectorDecompose::set_op_type(OpType p_op_type) {
|
||||
case OP_TYPE_VECTOR_3D: {
|
||||
set_input_port_default_value(0, Vector3(), get_input_port_default_value(0));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -4368,6 +4603,12 @@ String VisualShaderNodeVectorDecompose::generate_code(Shader::Mode p_mode, Visua
|
||||
code += " " + p_output_vars[1] + " = " + p_input_vars[0] + ".y;\n";
|
||||
code += " " + p_output_vars[2] + " = " + p_input_vars[0] + ".z;\n";
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
code += " " + p_output_vars[0] + " = " + p_input_vars[0] + ".x;\n";
|
||||
code += " " + p_output_vars[1] + " = " + p_input_vars[0] + ".y;\n";
|
||||
code += " " + p_output_vars[2] + " = " + p_input_vars[0] + ".z;\n";
|
||||
code += " " + p_output_vars[3] + " = " + p_input_vars[0] + ".w;\n";
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -5225,6 +5466,106 @@ Vector<StringName> VisualShaderNodeVec3Uniform::get_editable_properties() const
|
||||
VisualShaderNodeVec3Uniform::VisualShaderNodeVec3Uniform() {
|
||||
}
|
||||
|
||||
////////////// Vector4 Uniform
|
||||
|
||||
String VisualShaderNodeVec4Uniform::get_caption() const {
|
||||
return "Vector4Uniform";
|
||||
}
|
||||
|
||||
int VisualShaderNodeVec4Uniform::get_input_port_count() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
VisualShaderNodeVec4Uniform::PortType VisualShaderNodeVec4Uniform::get_input_port_type(int p_port) const {
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Uniform::get_input_port_name(int p_port) const {
|
||||
return String();
|
||||
}
|
||||
|
||||
int VisualShaderNodeVec4Uniform::get_output_port_count() const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
VisualShaderNodeVec4Uniform::PortType VisualShaderNodeVec4Uniform::get_output_port_type(int p_port) const {
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Uniform::get_output_port_name(int p_port) const {
|
||||
return ""; // No output port means the editor will be used as port.
|
||||
}
|
||||
|
||||
void VisualShaderNodeVec4Uniform::set_default_value_enabled(bool p_enabled) {
|
||||
default_value_enabled = p_enabled;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
bool VisualShaderNodeVec4Uniform::is_default_value_enabled() const {
|
||||
return default_value_enabled;
|
||||
}
|
||||
|
||||
void VisualShaderNodeVec4Uniform::set_default_value(const Quaternion &p_value) {
|
||||
default_value = p_value;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
Quaternion VisualShaderNodeVec4Uniform::get_default_value() const {
|
||||
return default_value;
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Uniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform vec4 " + get_uniform_name();
|
||||
if (default_value_enabled) {
|
||||
code += vformat(" = vec4(%.6f, %.6f, %.6f, %.6f)", default_value.x, default_value.y, default_value.z, default_value.w);
|
||||
}
|
||||
code += ";\n";
|
||||
return code;
|
||||
}
|
||||
|
||||
String VisualShaderNodeVec4Uniform::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) const {
|
||||
return " " + p_output_vars[0] + " = " + get_uniform_name() + ";\n";
|
||||
}
|
||||
|
||||
void VisualShaderNodeVec4Uniform::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_default_value_enabled", "enabled"), &VisualShaderNodeVec4Uniform::set_default_value_enabled);
|
||||
ClassDB::bind_method(D_METHOD("is_default_value_enabled"), &VisualShaderNodeVec4Uniform::is_default_value_enabled);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_default_value", "value"), &VisualShaderNodeVec4Uniform::set_default_value);
|
||||
ClassDB::bind_method(D_METHOD("get_default_value"), &VisualShaderNodeVec4Uniform::get_default_value);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "default_value_enabled"), "set_default_value_enabled", "is_default_value_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::QUATERNION, "default_value"), "set_default_value", "get_default_value");
|
||||
}
|
||||
|
||||
bool VisualShaderNodeVec4Uniform::is_show_prop_names() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VisualShaderNodeVec4Uniform::is_use_prop_slots() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VisualShaderNodeVec4Uniform::is_qualifier_supported(Qualifier p_qual) const {
|
||||
return true; // All qualifiers are supported.
|
||||
}
|
||||
|
||||
bool VisualShaderNodeVec4Uniform::is_convertible_to_constant() const {
|
||||
return true; // Conversion is allowed.
|
||||
}
|
||||
|
||||
Vector<StringName> VisualShaderNodeVec4Uniform::get_editable_properties() const {
|
||||
Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
|
||||
props.push_back("default_value_enabled");
|
||||
if (default_value_enabled) {
|
||||
props.push_back("default_value");
|
||||
}
|
||||
return props;
|
||||
}
|
||||
|
||||
VisualShaderNodeVec4Uniform::VisualShaderNodeVec4Uniform() {
|
||||
}
|
||||
|
||||
////////////// Transform Uniform
|
||||
|
||||
String VisualShaderNodeTransformUniform::get_caption() const {
|
||||
@ -6080,6 +6421,8 @@ VisualShaderNodeSwitch::PortType VisualShaderNodeSwitch::get_input_port_type(int
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_BOOLEAN:
|
||||
return PORT_TYPE_BOOLEAN;
|
||||
case OP_TYPE_TRANSFORM:
|
||||
@ -6116,6 +6459,8 @@ VisualShaderNodeSwitch::PortType VisualShaderNodeSwitch::get_output_port_type(in
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case OP_TYPE_BOOLEAN:
|
||||
return PORT_TYPE_BOOLEAN;
|
||||
case OP_TYPE_TRANSFORM:
|
||||
@ -6152,6 +6497,10 @@ void VisualShaderNodeSwitch::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, Vector3(1.0, 1.0, 1.0), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Vector3(0.0, 0.0, 0.0), get_input_port_default_value(2));
|
||||
break;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
set_input_port_default_value(1, Quaternion(1.0, 1.0, 1.0, 1.0), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Quaternion(0.0, 0.0, 0.0, 0.0), get_input_port_default_value(2));
|
||||
break;
|
||||
case OP_TYPE_BOOLEAN:
|
||||
set_input_port_default_value(1, true);
|
||||
set_input_port_default_value(2, false);
|
||||
@ -6181,12 +6530,13 @@ void VisualShaderNodeSwitch::_bind_methods() { // static
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "type"), &VisualShaderNodeSwitch::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeSwitch::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Float,Int,Vector2,Vector3,Boolean,Transform"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Float,Int,Vector2,Vector3,Vector4,Boolean,Transform"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_FLOAT);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_INT);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_BOOLEAN);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_TRANSFORM);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
@ -6420,6 +6770,8 @@ VisualShaderNodeCompare::PortType VisualShaderNodeCompare::get_input_port_type(i
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case CTYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case CTYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
case CTYPE_BOOLEAN:
|
||||
return PORT_TYPE_BOOLEAN;
|
||||
case CTYPE_TRANSFORM:
|
||||
@ -6514,6 +6866,12 @@ String VisualShaderNodeCompare::generate_code(Shader::Mode p_mode, VisualShader:
|
||||
code += " " + p_output_vars[0] + " = " + String(conditions[condition]).replace("$", "_bv") + ";\n";
|
||||
code += " }\n";
|
||||
} break;
|
||||
case CTYPE_VECTOR_4D: {
|
||||
code += " {\n";
|
||||
code += " bvec4 _bv = " + String(functions[func]).replace("$", p_input_vars[0] + ", " + p_input_vars[1]) + ";\n";
|
||||
code += " " + p_output_vars[0] + " = " + String(conditions[condition]).replace("$", "_bv") + ";\n";
|
||||
code += " }\n";
|
||||
} break;
|
||||
case CTYPE_BOOLEAN: {
|
||||
if (func > FUNC_NOT_EQUAL) {
|
||||
return " " + p_output_vars[0] + " = false;\n";
|
||||
@ -6558,6 +6916,11 @@ void VisualShaderNodeCompare::set_comparison_type(ComparisonType p_comparison_ty
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1));
|
||||
simple_decl = false;
|
||||
break;
|
||||
case CTYPE_VECTOR_4D:
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
simple_decl = false;
|
||||
break;
|
||||
case CTYPE_BOOLEAN:
|
||||
set_input_port_default_value(0, false);
|
||||
set_input_port_default_value(1, false);
|
||||
@ -6609,7 +6972,7 @@ Vector<StringName> VisualShaderNodeCompare::get_editable_properties() const {
|
||||
Vector<StringName> props;
|
||||
props.push_back("type");
|
||||
props.push_back("function");
|
||||
if (comparison_type == CTYPE_VECTOR_2D || comparison_type == CTYPE_VECTOR_3D) {
|
||||
if (comparison_type == CTYPE_VECTOR_2D || comparison_type == CTYPE_VECTOR_3D || comparison_type == CTYPE_VECTOR_4D) {
|
||||
props.push_back("condition");
|
||||
}
|
||||
return props;
|
||||
@ -6625,7 +6988,7 @@ void VisualShaderNodeCompare::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_condition", "condition"), &VisualShaderNodeCompare::set_condition);
|
||||
ClassDB::bind_method(D_METHOD("get_condition"), &VisualShaderNodeCompare::get_condition);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_ENUM, "Float,Int,Vector2,Vector3,Boolean,Transform"), "set_comparison_type", "get_comparison_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_ENUM, "Float,Int,Vector2,Vector3,Vector4,Boolean,Transform"), "set_comparison_type", "get_comparison_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "function", PROPERTY_HINT_ENUM, "a == b,a != b,a > b,a >= b,a < b,a <= b"), "set_function", "get_function");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "condition", PROPERTY_HINT_ENUM, "All,Any"), "set_condition", "get_condition");
|
||||
|
||||
@ -6633,6 +6996,7 @@ void VisualShaderNodeCompare::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(CTYPE_SCALAR_INT);
|
||||
BIND_ENUM_CONSTANT(CTYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(CTYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(CTYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(CTYPE_BOOLEAN);
|
||||
BIND_ENUM_CONSTANT(CTYPE_TRANSFORM);
|
||||
BIND_ENUM_CONSTANT(CTYPE_MAX);
|
||||
@ -6672,6 +7036,8 @@ VisualShaderNodeMultiplyAdd::PortType VisualShaderNodeMultiplyAdd::get_input_por
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -6699,6 +7065,8 @@ VisualShaderNodeMultiplyAdd::PortType VisualShaderNodeMultiplyAdd::get_output_po
|
||||
return PORT_TYPE_VECTOR_2D;
|
||||
case OP_TYPE_VECTOR_3D:
|
||||
return PORT_TYPE_VECTOR_3D;
|
||||
case OP_TYPE_VECTOR_4D:
|
||||
return PORT_TYPE_VECTOR_4D;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -6734,6 +7102,11 @@ void VisualShaderNodeMultiplyAdd::set_op_type(OpType p_op_type) {
|
||||
set_input_port_default_value(1, Vector3(), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Vector3(), get_input_port_default_value(2));
|
||||
} break;
|
||||
case OP_TYPE_VECTOR_4D: {
|
||||
set_input_port_default_value(0, Quaternion(), get_input_port_default_value(0));
|
||||
set_input_port_default_value(1, Quaternion(), get_input_port_default_value(1));
|
||||
set_input_port_default_value(2, Quaternion(), get_input_port_default_value(2));
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -6755,11 +7128,12 @@ void VisualShaderNodeMultiplyAdd::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_op_type", "type"), &VisualShaderNodeMultiplyAdd::set_op_type);
|
||||
ClassDB::bind_method(D_METHOD("get_op_type"), &VisualShaderNodeMultiplyAdd::get_op_type);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector3"), "set_op_type", "get_op_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "op_type", PROPERTY_HINT_ENUM, "Scalar,Vector2,Vector3,Vector4"), "set_op_type", "get_op_type");
|
||||
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_SCALAR);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_2D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_3D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_VECTOR_4D);
|
||||
BIND_ENUM_CONSTANT(OP_TYPE_MAX);
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,7 @@ public:
|
||||
enum OpType {
|
||||
OP_TYPE_VECTOR_2D,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
@ -280,6 +281,36 @@ public:
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
class VisualShaderNodeVec4Constant : public VisualShaderNodeConstant {
|
||||
GDCLASS(VisualShaderNodeVec4Constant, VisualShaderNodeConstant);
|
||||
Quaternion constant;
|
||||
|
||||
protected:
|
||||
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_constant(const Quaternion &p_constant);
|
||||
Quaternion get_constant() const;
|
||||
|
||||
virtual Vector<StringName> get_editable_properties() const override;
|
||||
|
||||
VisualShaderNodeVec4Constant();
|
||||
};
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
class VisualShaderNodeTransformConstant : public VisualShaderNodeConstant {
|
||||
GDCLASS(VisualShaderNodeTransformConstant, VisualShaderNodeConstant);
|
||||
Transform3D constant;
|
||||
@ -1282,6 +1313,7 @@ public:
|
||||
OP_TYPE_INT,
|
||||
OP_TYPE_VECTOR_2D,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
@ -1324,6 +1356,7 @@ public:
|
||||
OP_TYPE_SCALAR,
|
||||
OP_TYPE_VECTOR_2D,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
@ -1427,6 +1460,8 @@ public:
|
||||
OP_TYPE_VECTOR_2D_SCALAR,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_3D_SCALAR,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_VECTOR_4D_SCALAR,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
@ -1471,6 +1506,8 @@ public:
|
||||
OP_TYPE_VECTOR_2D_SCALAR,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_3D_SCALAR,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_VECTOR_4D_SCALAR,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
@ -1561,6 +1598,8 @@ public:
|
||||
OP_TYPE_VECTOR_2D_SCALAR,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_3D_SCALAR,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_VECTOR_4D_SCALAR,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
@ -1990,6 +2029,49 @@ public:
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
class VisualShaderNodeVec4Uniform : public VisualShaderNodeUniform {
|
||||
GDCLASS(VisualShaderNodeVec4Uniform, VisualShaderNodeUniform);
|
||||
|
||||
private:
|
||||
bool default_value_enabled = false;
|
||||
Quaternion default_value;
|
||||
|
||||
protected:
|
||||
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_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) 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;
|
||||
|
||||
virtual bool is_show_prop_names() const override;
|
||||
virtual bool is_use_prop_slots() const override;
|
||||
|
||||
void set_default_value_enabled(bool p_enabled);
|
||||
bool is_default_value_enabled() const;
|
||||
|
||||
void set_default_value(const Quaternion &p_value);
|
||||
Quaternion get_default_value() const;
|
||||
|
||||
bool is_qualifier_supported(Qualifier p_qual) const override;
|
||||
bool is_convertible_to_constant() const override;
|
||||
|
||||
virtual Vector<StringName> get_editable_properties() const override;
|
||||
|
||||
VisualShaderNodeVec4Uniform();
|
||||
};
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
class VisualShaderNodeTransformUniform : public VisualShaderNodeUniform {
|
||||
GDCLASS(VisualShaderNodeTransformUniform, VisualShaderNodeUniform);
|
||||
|
||||
@ -2248,6 +2330,7 @@ public:
|
||||
OP_TYPE_INT,
|
||||
OP_TYPE_VECTOR_2D,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_BOOLEAN,
|
||||
OP_TYPE_TRANSFORM,
|
||||
OP_TYPE_MAX,
|
||||
@ -2362,6 +2445,7 @@ public:
|
||||
CTYPE_SCALAR_INT,
|
||||
CTYPE_VECTOR_2D,
|
||||
CTYPE_VECTOR_3D,
|
||||
CTYPE_VECTOR_4D,
|
||||
CTYPE_BOOLEAN,
|
||||
CTYPE_TRANSFORM,
|
||||
CTYPE_MAX,
|
||||
@ -2431,6 +2515,7 @@ public:
|
||||
OP_TYPE_SCALAR,
|
||||
OP_TYPE_VECTOR_2D,
|
||||
OP_TYPE_VECTOR_3D,
|
||||
OP_TYPE_VECTOR_4D,
|
||||
OP_TYPE_MAX,
|
||||
};
|
||||
|
||||
|
@ -3467,7 +3467,7 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::C
|
||||
}
|
||||
value = Variant(array);
|
||||
} else {
|
||||
value = Variant(Plane(p_value[0].sint, p_value[1].sint, p_value[2].sint, p_value[3].sint));
|
||||
value = Variant(Quaternion(p_value[0].sint, p_value[1].sint, p_value[2].sint, p_value[3].sint));
|
||||
}
|
||||
break;
|
||||
case ShaderLanguage::TYPE_UINT:
|
||||
@ -3517,7 +3517,7 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::C
|
||||
}
|
||||
value = Variant(array);
|
||||
} else {
|
||||
value = Variant(Plane(p_value[0].uint, p_value[1].uint, p_value[2].uint, p_value[3].uint));
|
||||
value = Variant(Quaternion(p_value[0].uint, p_value[1].uint, p_value[2].uint, p_value[3].uint));
|
||||
}
|
||||
break;
|
||||
case ShaderLanguage::TYPE_FLOAT:
|
||||
@ -3581,7 +3581,7 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<ShaderLanguage::C
|
||||
if (p_hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
|
||||
value = Variant(Color(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real));
|
||||
} else {
|
||||
value = Variant(Plane(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real));
|
||||
value = Variant(Quaternion(p_value[0].real, p_value[1].real, p_value[2].real, p_value[3].real));
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -3776,7 +3776,7 @@ PropertyInfo ShaderLanguage::uniform_to_property_info(const ShaderNode::Uniform
|
||||
if (p_uniform.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
|
||||
pi.type = Variant::COLOR;
|
||||
} else {
|
||||
pi.type = Variant::PLANE;
|
||||
pi.type = Variant::QUATERNION;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
|
Loading…
Reference in New Issue
Block a user