diff options
Diffstat (limited to 'scene/resources/visual_shader.cpp')
-rw-r--r-- | scene/resources/visual_shader.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 71e84ef636..7f1c322c8f 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -46,6 +46,10 @@ bool VisualShaderNode::is_simple_decl() const { return simple_decl; } +int VisualShaderNode::get_default_input_port(PortType p_type) const { + return 0; +} + void VisualShaderNode::set_output_port_for_preview(int p_index) { port_preview = p_index; } @@ -378,6 +382,8 @@ bool VisualShaderNode::is_input_port_default(int p_port, Shader::Mode p_mode) co } void VisualShaderNode::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_default_input_port", "type"), &VisualShaderNode::get_default_input_port); + ClassDB::bind_method(D_METHOD("set_output_port_for_preview", "port"), &VisualShaderNode::set_output_port_for_preview); ClassDB::bind_method(D_METHOD("get_output_port_for_preview"), &VisualShaderNode::get_output_port_for_preview); @@ -481,6 +487,12 @@ String VisualShaderNodeCustom::get_input_port_name(int p_port) const { return input_ports[p_port].name; } +int VisualShaderNodeCustom::get_default_input_port(PortType p_type) const { + int ret = 0; + GDVIRTUAL_CALL(_get_default_input_port, p_type, ret); + return ret; +} + int VisualShaderNodeCustom::get_output_port_count() const { return output_ports.size(); } @@ -649,6 +661,7 @@ void VisualShaderNodeCustom::_bind_methods() { GDVIRTUAL_BIND(_get_input_port_count); GDVIRTUAL_BIND(_get_input_port_type, "port"); GDVIRTUAL_BIND(_get_input_port_name, "port"); + GDVIRTUAL_BIND(_get_default_input_port, "type"); GDVIRTUAL_BIND(_get_output_port_count); GDVIRTUAL_BIND(_get_output_port_type, "port"); GDVIRTUAL_BIND(_get_output_port_name, "port"); @@ -767,7 +780,7 @@ void VisualShader::add_node(Type p_type, const Ref<VisualShaderNode> &p_node, co input->shader_type = p_type; } - n.node->connect("changed", callable_mp(this, &VisualShader::_queue_update)); + n.node->connect_changed(callable_mp(this, &VisualShader::_queue_update)); Ref<VisualShaderNodeCustom> custom = n.node; if (custom.is_valid()) { @@ -834,7 +847,7 @@ void VisualShader::remove_node(Type p_type, int p_id) { Graph *g = &graph[p_type]; ERR_FAIL_COND(!g->nodes.has(p_id)); - g->nodes[p_id].node->disconnect("changed", callable_mp(this, &VisualShader::_queue_update)); + g->nodes[p_id].node->disconnect_changed(callable_mp(this, &VisualShader::_queue_update)); g->nodes.erase(p_id); @@ -907,7 +920,7 @@ void VisualShader::replace_node(Type p_type, int p_id, const StringName &p_new_c } } - vsn->connect("changed", callable_mp(this, &VisualShader::_queue_update)); + vsn->connect_changed(callable_mp(this, &VisualShader::_queue_update)); g->nodes[p_id].node = Ref<VisualShaderNode>(vsn); _queue_update(); @@ -3645,6 +3658,8 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Alpha AA Edge", "ALPHA_ANTIALIASING_EDGE" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR_2D, "Alpha UV", "ALPHA_TEXTURE_COORDINATE" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "Depth", "DEPTH" }, + //////////////////////////////////////////////////////////////////////// // Node3D, Light. //////////////////////////////////////////////////////////////////////// @@ -3768,7 +3783,7 @@ bool VisualShaderNodeOutput::is_port_separator(int p_index) const { } if (shader_mode == Shader::MODE_SPATIAL && shader_type == VisualShader::TYPE_FRAGMENT) { String port_name = get_input_port_name(p_index); - return bool(port_name == "AO" || port_name == "Normal" || port_name == "Rim" || port_name == "Clearcoat" || port_name == "Anisotropy" || port_name == "Subsurf Scatter" || port_name == "Alpha Scissor Threshold"); + return bool(port_name == "AO" || port_name == "Normal" || port_name == "Rim" || port_name == "Clearcoat" || port_name == "Anisotropy" || port_name == "Subsurf Scatter" || port_name == "Alpha Scissor Threshold" || port_name == "Depth"); } return false; } |