You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-02 16:48:55 +00:00
Add instance_index option to parameters in visual shaders
This commit is contained in:
@@ -5213,12 +5213,22 @@ String VisualShaderNodeFloatParameter::get_output_port_name(int p_port) const {
|
||||
|
||||
String VisualShaderNodeFloatParameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = "";
|
||||
bool add_comma = true;
|
||||
if (hint == HINT_RANGE) {
|
||||
code += _get_qual_str() + "uniform float " + get_parameter_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ")";
|
||||
} else if (hint == HINT_RANGE_STEP) {
|
||||
code += _get_qual_str() + "uniform float " + get_parameter_name() + " : hint_range(" + rtos(hint_range_min) + ", " + rtos(hint_range_max) + ", " + rtos(hint_range_step) + ")";
|
||||
} else {
|
||||
code += _get_qual_str() + "uniform float " + get_parameter_name();
|
||||
add_comma = false;
|
||||
}
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
if (add_comma) {
|
||||
code += ", ";
|
||||
} else {
|
||||
code += ": ";
|
||||
}
|
||||
code += vformat("instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += " = " + rtos(default_value);
|
||||
@@ -5404,6 +5414,7 @@ String VisualShaderNodeIntParameter::get_output_port_name(int p_port) const {
|
||||
|
||||
String VisualShaderNodeIntParameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = "";
|
||||
bool add_comma = true;
|
||||
if (hint == HINT_RANGE) {
|
||||
code += _get_qual_str() + "uniform int " + get_parameter_name() + " : hint_range(" + itos(hint_range_min) + ", " + itos(hint_range_max) + ")";
|
||||
} else if (hint == HINT_RANGE_STEP) {
|
||||
@@ -5424,6 +5435,15 @@ String VisualShaderNodeIntParameter::generate_global(Shader::Mode p_mode, Visual
|
||||
code += ")";
|
||||
} else {
|
||||
code += _get_qual_str() + "uniform int " + get_parameter_name();
|
||||
add_comma = false;
|
||||
}
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
if (add_comma) {
|
||||
code += ", ";
|
||||
} else {
|
||||
code += ": ";
|
||||
}
|
||||
code += vformat("instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += " = " + itos(default_value);
|
||||
@@ -5629,6 +5649,9 @@ String VisualShaderNodeUIntParameter::get_output_port_name(int p_port) const {
|
||||
|
||||
String VisualShaderNodeUIntParameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform uint " + get_parameter_name();
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
code += vformat(": instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += " = " + itos(default_value);
|
||||
}
|
||||
@@ -5759,6 +5782,9 @@ bool VisualShaderNodeBooleanParameter::get_default_value() const {
|
||||
|
||||
String VisualShaderNodeBooleanParameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform bool " + get_parameter_name();
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
code += vformat(": instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
if (default_value) {
|
||||
code += " = true";
|
||||
@@ -5869,6 +5895,9 @@ Color VisualShaderNodeColorParameter::get_default_value() const {
|
||||
|
||||
String VisualShaderNodeColorParameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform vec4 " + get_parameter_name() + " : source_color";
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
code += vformat(", instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += vformat(" = vec4(%.6f, %.6f, %.6f, %.6f)", default_value.r, default_value.g, default_value.b, default_value.a);
|
||||
}
|
||||
@@ -5965,6 +5994,9 @@ Vector2 VisualShaderNodeVec2Parameter::get_default_value() const {
|
||||
|
||||
String VisualShaderNodeVec2Parameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform vec2 " + get_parameter_name();
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
code += vformat(": instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += vformat(" = vec2(%.6f, %.6f)", default_value.x, default_value.y);
|
||||
}
|
||||
@@ -6065,6 +6097,9 @@ Vector3 VisualShaderNodeVec3Parameter::get_default_value() const {
|
||||
|
||||
String VisualShaderNodeVec3Parameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform vec3 " + get_parameter_name();
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
code += vformat(": instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += vformat(" = vec3(%.6f, %.6f, %.6f)", default_value.x, default_value.y, default_value.z);
|
||||
}
|
||||
@@ -6165,6 +6200,9 @@ Vector4 VisualShaderNodeVec4Parameter::get_default_value() const {
|
||||
|
||||
String VisualShaderNodeVec4Parameter::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const {
|
||||
String code = _get_qual_str() + "uniform vec4 " + get_parameter_name();
|
||||
if (get_qualifier() == QUAL_INSTANCE_INDEX) {
|
||||
code += vformat(": instance_index(%d)", get_instance_index());
|
||||
}
|
||||
if (default_value_enabled) {
|
||||
code += vformat(" = vec4(%.6f, %.6f, %.6f, %.6f)", default_value.x, default_value.y, default_value.z, default_value.w);
|
||||
}
|
||||
@@ -6300,7 +6338,7 @@ bool VisualShaderNodeTransformParameter::is_use_prop_slots() const {
|
||||
}
|
||||
|
||||
bool VisualShaderNodeTransformParameter::is_qualifier_supported(Qualifier p_qual) const {
|
||||
if (p_qual == Qualifier::QUAL_INSTANCE) {
|
||||
if (p_qual == Qualifier::QUAL_INSTANCE || p_qual == Qualifier::QUAL_INSTANCE_INDEX) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -6703,6 +6741,8 @@ bool VisualShaderNodeTextureParameter::is_qualifier_supported(Qualifier p_qual)
|
||||
return true;
|
||||
case Qualifier::QUAL_INSTANCE:
|
||||
return false;
|
||||
case Qualifier::QUAL_INSTANCE_INDEX:
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user