1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-18 14:21:41 +00:00

Merge pull request #38475 from Chaosus/vs_quals

Added uniform qualifiers to visual shaders
This commit is contained in:
Rémi Verschelde
2020-05-06 07:27:35 +02:00
committed by GitHub
5 changed files with 133 additions and 18 deletions

View File

@@ -2158,12 +2158,43 @@ String VisualShaderNodeUniform::get_uniform_name() const {
return uniform_name;
}
void VisualShaderNodeUniform::set_qualifier(VisualShaderNodeUniform::Qualifier p_qual) {
qualifier = p_qual;
emit_changed();
}
VisualShaderNodeUniform::Qualifier VisualShaderNodeUniform::get_qualifier() const {
return qualifier;
}
void VisualShaderNodeUniform::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_uniform_name", "name"), &VisualShaderNodeUniform::set_uniform_name);
ClassDB::bind_method(D_METHOD("get_uniform_name"), &VisualShaderNodeUniform::get_uniform_name);
ClassDB::bind_method(D_METHOD("set_qualifier", "qualifier"), &VisualShaderNodeUniform::set_qualifier);
ClassDB::bind_method(D_METHOD("get_qualifier"), &VisualShaderNodeUniform::get_qualifier);
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "uniform_name"), "set_uniform_name", "get_uniform_name");
ADD_PROPERTY(PropertyInfo(Variant::INT, "qualifier", PROPERTY_HINT_ENUM, "None,Global,Instance"), "set_qualifier", "get_qualifier");
BIND_ENUM_CONSTANT(QUAL_NONE);
BIND_ENUM_CONSTANT(QUAL_GLOBAL);
BIND_ENUM_CONSTANT(QUAL_INSTANCE);
}
String VisualShaderNodeUniform::_get_qual_str() const {
if (is_qualifier_supported(qualifier)) {
switch (qualifier) {
case QUAL_NONE:
break;
case QUAL_GLOBAL:
return "global ";
case QUAL_INSTANCE:
return "instance ";
}
}
return String();
}
String VisualShaderNodeUniform::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
@@ -2173,11 +2204,21 @@ String VisualShaderNodeUniform::get_warning(Shader::Mode p_mode, VisualShader::T
if (keyword_list.find(uniform_name)) {
return TTR("Uniform name cannot be equal to a shader keyword. Choose another name.");
}
if (!is_qualifier_supported(qualifier)) {
return "This uniform type does not support that qualifier.";
}
return String();
}
Vector<StringName> VisualShaderNodeUniform::get_editable_properties() const {
Vector<StringName> props;
props.push_back("qualifier");
return props;
}
VisualShaderNodeUniform::VisualShaderNodeUniform() {
qualifier = QUAL_NONE;
}
////////////// GroupBase