Переглянути джерело

Prevents TextureUniform in visual shaders from conversion to constant

Yuri Roubinsky 4 роки тому
батько
коміт
44af52d62c

+ 1 - 1
editor/plugins/visual_shader_editor_plugin.cpp

@@ -2627,7 +2627,7 @@ void VisualShaderEditor::_graph_gui_input(const Ref<InputEvent> &p_event) {
 						selected_constants.insert(id);
 						selected_constants.insert(id);
 					}
 					}
 					VisualShaderNodeUniform *uniform_node = Object::cast_to<VisualShaderNodeUniform>(node.ptr());
 					VisualShaderNodeUniform *uniform_node = Object::cast_to<VisualShaderNodeUniform>(node.ptr());
-					if (uniform_node != nullptr) {
+					if (uniform_node != nullptr && uniform_node->is_convertible_to_constant()) {
 						selected_uniforms.insert(id);
 						selected_uniforms.insert(id);
 					}
 					}
 				}
 				}

+ 1 - 0
scene/resources/visual_shader.h

@@ -421,6 +421,7 @@ public:
 	bool is_global_code_generated() const;
 	bool is_global_code_generated() const;
 
 
 	virtual bool is_qualifier_supported(Qualifier p_qual) const = 0;
 	virtual bool is_qualifier_supported(Qualifier p_qual) const = 0;
+	virtual bool is_convertible_to_constant() const = 0;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override;
 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override;

+ 28 - 0
scene/resources/visual_shader_nodes.cpp

@@ -3744,6 +3744,10 @@ bool VisualShaderNodeFloatUniform::is_qualifier_supported(Qualifier p_qual) cons
 	return true; // all qualifiers are supported
 	return true; // all qualifiers are supported
 }
 }
 
 
+bool VisualShaderNodeFloatUniform::is_convertible_to_constant() const {
+	return true; // conversion is allowed
+}
+
 Vector<StringName> VisualShaderNodeFloatUniform::get_editable_properties() const {
 Vector<StringName> VisualShaderNodeFloatUniform::get_editable_properties() const {
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	props.push_back("hint");
 	props.push_back("hint");
@@ -3911,6 +3915,10 @@ bool VisualShaderNodeIntUniform::is_qualifier_supported(Qualifier p_qual) const
 	return true; // all qualifiers are supported
 	return true; // all qualifiers are supported
 }
 }
 
 
+bool VisualShaderNodeIntUniform::is_convertible_to_constant() const {
+	return true; // conversion is allowed
+}
+
 Vector<StringName> VisualShaderNodeIntUniform::get_editable_properties() const {
 Vector<StringName> VisualShaderNodeIntUniform::get_editable_properties() const {
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	props.push_back("hint");
 	props.push_back("hint");
@@ -4019,6 +4027,10 @@ bool VisualShaderNodeBooleanUniform::is_qualifier_supported(Qualifier p_qual) co
 	return true; // all qualifiers are supported
 	return true; // all qualifiers are supported
 }
 }
 
 
+bool VisualShaderNodeBooleanUniform::is_convertible_to_constant() const {
+	return true; // conversion is allowed
+}
+
 Vector<StringName> VisualShaderNodeBooleanUniform::get_editable_properties() const {
 Vector<StringName> VisualShaderNodeBooleanUniform::get_editable_properties() const {
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	props.push_back("default_value_enabled");
 	props.push_back("default_value_enabled");
@@ -4113,6 +4125,10 @@ bool VisualShaderNodeColorUniform::is_qualifier_supported(Qualifier p_qual) cons
 	return true; // all qualifiers are supported
 	return true; // all qualifiers are supported
 }
 }
 
 
+bool VisualShaderNodeColorUniform::is_convertible_to_constant() const {
+	return true; // conversion is allowed
+}
+
 Vector<StringName> VisualShaderNodeColorUniform::get_editable_properties() const {
 Vector<StringName> VisualShaderNodeColorUniform::get_editable_properties() const {
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	props.push_back("default_value_enabled");
 	props.push_back("default_value_enabled");
@@ -4209,6 +4225,10 @@ bool VisualShaderNodeVec3Uniform::is_qualifier_supported(Qualifier p_qual) const
 	return true; // all qualifiers are supported
 	return true; // all qualifiers are supported
 }
 }
 
 
+bool VisualShaderNodeVec3Uniform::is_convertible_to_constant() const {
+	return true; // conversion is allowed
+}
+
 Vector<StringName> VisualShaderNodeVec3Uniform::get_editable_properties() const {
 Vector<StringName> VisualShaderNodeVec3Uniform::get_editable_properties() const {
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	props.push_back("default_value_enabled");
 	props.push_back("default_value_enabled");
@@ -4309,6 +4329,10 @@ bool VisualShaderNodeTransformUniform::is_qualifier_supported(Qualifier p_qual)
 	return true; // all qualifiers are supported
 	return true; // all qualifiers are supported
 }
 }
 
 
+bool VisualShaderNodeTransformUniform::is_convertible_to_constant() const {
+	return true; // conversion is allowed
+}
+
 Vector<StringName> VisualShaderNodeTransformUniform::get_editable_properties() const {
 Vector<StringName> VisualShaderNodeTransformUniform::get_editable_properties() const {
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	Vector<StringName> props = VisualShaderNodeUniform::get_editable_properties();
 	props.push_back("default_value_enabled");
 	props.push_back("default_value_enabled");
@@ -4494,6 +4518,10 @@ bool VisualShaderNodeTextureUniform::is_qualifier_supported(Qualifier p_qual) co
 	return false;
 	return false;
 }
 }
 
 
+bool VisualShaderNodeTextureUniform::is_convertible_to_constant() const {
+	return false; // conversion is not allowed
+}
+
 VisualShaderNodeTextureUniform::VisualShaderNodeTextureUniform() {
 VisualShaderNodeTextureUniform::VisualShaderNodeTextureUniform() {
 	simple_decl = false;
 	simple_decl = false;
 }
 }

+ 7 - 0
scene/resources/visual_shader_nodes.h

@@ -1574,6 +1574,7 @@ public:
 	float get_default_value() const;
 	float get_default_value() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 
 
@@ -1639,6 +1640,7 @@ public:
 	int get_default_value() const;
 	int get_default_value() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 
 
@@ -1683,6 +1685,7 @@ public:
 	bool get_default_value() const;
 	bool get_default_value() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 
 
@@ -1724,6 +1727,7 @@ public:
 	Color get_default_value() const;
 	Color get_default_value() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 
 
@@ -1766,6 +1770,7 @@ public:
 	Vector3 get_default_value() const;
 	Vector3 get_default_value() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 
 
@@ -1808,6 +1813,7 @@ public:
 	Transform get_default_value() const;
 	Transform get_default_value() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	virtual Vector<StringName> get_editable_properties() const override;
 	virtual Vector<StringName> get_editable_properties() const override;
 
 
@@ -1865,6 +1871,7 @@ public:
 	ColorDefault get_color_default() const;
 	ColorDefault get_color_default() const;
 
 
 	bool is_qualifier_supported(Qualifier p_qual) const override;
 	bool is_qualifier_supported(Qualifier p_qual) const override;
+	bool is_convertible_to_constant() const override;
 
 
 	VisualShaderNodeTextureUniform();
 	VisualShaderNodeTextureUniform();
 };
 };