| 
									
										
										
										
											2018-08-29 22:38:13 +02:00
										 |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*  visual_shader_nodes.h                                                 */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*                         This file is part of:                          */ | 
					
						
							|  |  |  | /*                             GODOT ENGINE                               */ | 
					
						
							|  |  |  | /*                        https://godotengine.org                         */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ | 
					
						
							|  |  |  | /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining  */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the        */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including    */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,    */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to     */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to  */ | 
					
						
							|  |  |  | /* the following conditions:                                              */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be         */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.        */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,        */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY   */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,   */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE      */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                 */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | #ifndef VISUAL_SHADER_NODES_H
 | 
					
						
							|  |  |  | #define VISUAL_SHADER_NODES_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | #include "scene/resources/compressed_texture.h"
 | 
					
						
							| 
									
										
										
										
											2023-07-11 22:29:09 +02:00
										 |  |  | #include "scene/resources/curve_texture.h"
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | #include "scene/resources/visual_shader.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-11 22:29:09 +02:00
										 |  |  | class Cubemap; | 
					
						
							|  |  |  | class Texture2DArray; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// Vector Base Node
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeVectorBase : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorBase, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_VECTOR_3D; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	virtual String get_caption() const override = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual int get_input_port_count() const override = 0; | 
					
						
							|  |  |  | 	virtual PortType get_input_port_type(int p_port) const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual int get_output_port_count() const override = 0; | 
					
						
							|  |  |  | 	virtual PortType get_output_port_type(int p_port) const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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 = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual void set_op_type(OpType p_op_type); | 
					
						
							|  |  |  | 	OpType get_op_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_VECTOR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	VisualShaderNodeVectorBase(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeVectorBase::OpType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// CONSTANTS
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | class VisualShaderNodeConstant : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeConstant, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	virtual String get_caption() const override = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual int get_input_port_count() const override = 0; | 
					
						
							|  |  |  | 	virtual PortType get_input_port_type(int p_port) const override = 0; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual int get_output_port_count() const override = 0; | 
					
						
							|  |  |  | 	virtual PortType get_output_port_type(int p_port) const override = 0; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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 = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_INPUT; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | 	VisualShaderNodeConstant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeFloatConstant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeFloatConstant, VisualShaderNodeConstant); | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	float constant = 0.0f; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_constant(float p_constant); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	float get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	VisualShaderNodeFloatConstant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | class VisualShaderNodeIntConstant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeIntConstant, VisualShaderNodeConstant); | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	int constant = 0; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_constant(int p_constant); | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	int get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeIntConstant(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | class VisualShaderNodeUIntConstant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeUIntConstant, VisualShaderNodeConstant); | 
					
						
							|  |  |  | 	int constant = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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(int p_constant); | 
					
						
							|  |  |  | 	int get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeUIntConstant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | class VisualShaderNodeBooleanConstant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeBooleanConstant, VisualShaderNodeConstant); | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	bool constant = false; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_constant(bool p_constant); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	bool get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeBooleanConstant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | class VisualShaderNodeColorConstant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeColorConstant, VisualShaderNodeConstant); | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Color constant = Color(1, 1, 1, 1); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_constant(const Color &p_constant); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	Color get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeColorConstant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVec2Constant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVec2Constant, VisualShaderNodeConstant); | 
					
						
							|  |  |  | 	Vector2 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 Vector2 &p_constant); | 
					
						
							|  |  |  | 	Vector2 get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVec2Constant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | class VisualShaderNodeVec3Constant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVec3Constant, VisualShaderNodeConstant); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	Vector3 constant; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_constant(const Vector3 &p_constant); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	Vector3 get_constant() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVec3Constant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 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(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-30 11:45:31 +03:00
										 |  |  | class VisualShaderNodeTransformConstant : public VisualShaderNodeConstant { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTransformConstant, VisualShaderNodeConstant); | 
					
						
							| 
									
										
										
										
											2020-10-17 01:08:21 -04:00
										 |  |  | 	Transform3D constant; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_constant(const Transform3D &p_constant); | 
					
						
							| 
									
										
										
										
											2020-10-17 01:08:21 -04:00
										 |  |  | 	Transform3D get_constant() const; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeTransformConstant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// TEXTURES
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeTexture : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeTexture, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | 	Ref<Texture2D> texture; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Source { | 
					
						
							|  |  |  | 		SOURCE_TEXTURE, | 
					
						
							|  |  |  | 		SOURCE_SCREEN, | 
					
						
							|  |  |  | 		SOURCE_2D_TEXTURE, | 
					
						
							| 
									
										
										
										
											2019-07-05 11:48:31 +03:00
										 |  |  | 		SOURCE_2D_NORMAL, | 
					
						
							| 
									
										
										
										
											2019-10-01 11:51:50 +03:00
										 |  |  | 		SOURCE_DEPTH, | 
					
						
							|  |  |  | 		SOURCE_PORT, | 
					
						
							| 
									
										
										
										
											2023-01-05 11:55:59 -08:00
										 |  |  | 		SOURCE_3D_NORMAL, | 
					
						
							|  |  |  | 		SOURCE_ROUGHNESS, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		SOURCE_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum TextureType { | 
					
						
							|  |  |  | 		TYPE_DATA, | 
					
						
							|  |  |  | 		TYPE_COLOR, | 
					
						
							| 
									
										
										
										
											2020-12-23 09:34:26 +00:00
										 |  |  | 		TYPE_NORMAL_MAP, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		TYPE_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Source source = SOURCE_TEXTURE; | 
					
						
							|  |  |  | 	TextureType texture_type = TYPE_DATA; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 11:09:16 +03:00
										 |  |  | 	virtual bool is_input_port_default(int p_port, Shader::Mode p_mode) const override; | 
					
						
							| 
									
										
										
										
											2019-10-03 10:40:26 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const override; | 
					
						
							|  |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_source(Source p_source); | 
					
						
							|  |  |  | 	Source get_source() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_texture(Ref<Texture2D> p_texture); | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | 	Ref<Texture2D> get_texture() const; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_texture_type(TextureType p_texture_type); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	TextureType get_texture_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	VisualShaderNodeTexture(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTexture::TextureType) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTexture::Source) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-04 12:11:58 +03:00
										 |  |  | class VisualShaderNodeCurveTexture : public VisualShaderNodeResizableBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeCurveTexture, VisualShaderNodeResizableBase); | 
					
						
							|  |  |  | 	Ref<CurveTexture> texture; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const override; | 
					
						
							|  |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-10-04 12:11:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_texture(Ref<CurveTexture> p_texture); | 
					
						
							| 
									
										
										
										
											2020-10-04 12:11:58 +03:00
										 |  |  | 	Ref<CurveTexture> get_texture() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-04 12:11:58 +03:00
										 |  |  | 	VisualShaderNodeCurveTexture(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-14 00:06:44 +02:00
										 |  |  | class VisualShaderNodeCurveXYZTexture : public VisualShaderNodeResizableBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeCurveXYZTexture, VisualShaderNodeResizableBase); | 
					
						
							|  |  |  | 	Ref<CurveXYZTexture> texture; | 
					
						
							| 
									
										
										
										
											2021-07-04 11:56:21 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_texture(Ref<CurveXYZTexture> p_texture); | 
					
						
							| 
									
										
										
										
											2021-07-14 00:06:44 +02:00
										 |  |  | 	Ref<CurveXYZTexture> get_texture() const; | 
					
						
							| 
									
										
										
										
											2021-07-04 11:56:21 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-14 00:06:44 +02:00
										 |  |  | 	VisualShaderNodeCurveXYZTexture(); | 
					
						
							| 
									
										
										
										
											2021-07-04 11:56:21 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | class VisualShaderNodeSample3D : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeSample3D, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Source { | 
					
						
							|  |  |  | 		SOURCE_TEXTURE, | 
					
						
							|  |  |  | 		SOURCE_PORT, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		SOURCE_MAX, | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Source source = SOURCE_TEXTURE; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2022-01-22 11:09:16 +03:00
										 |  |  | 	virtual bool is_input_port_default(int p_port, Shader::Mode p_mode) const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_source(Source p_source); | 
					
						
							|  |  |  | 	Source get_source() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 	VisualShaderNodeSample3D(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeSample3D::Source) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeTexture2DArray : public VisualShaderNodeSample3D { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTexture2DArray, VisualShaderNodeSample3D); | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | 	Ref<TextureLayered> texture_array; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | #ifndef DISABLE_DEPRECATED
 | 
					
						
							|  |  |  | 	void _set_texture_array_bind_compat_95126(Ref<Texture2DArray> p_texture_array); | 
					
						
							|  |  |  | 	Ref<Texture2DArray> _get_texture_array_bind_compat_95126() const; | 
					
						
							|  |  |  | 	static void _bind_compatibility_methods(); | 
					
						
							|  |  |  | #endif // DISABLE_DEPRECATED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const override; | 
					
						
							|  |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | 	void set_texture_array(Ref<TextureLayered> p_texture_array); | 
					
						
							|  |  |  | 	Ref<TextureLayered> get_texture_array() const; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeTexture2DArray(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-10 06:47:09 +03:00
										 |  |  | class VisualShaderNodeTexture3D : public VisualShaderNodeSample3D { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTexture3D, VisualShaderNodeSample3D); | 
					
						
							|  |  |  | 	Ref<Texture3D> texture; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	virtual String get_caption() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const override; | 
					
						
							|  |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_texture(Ref<Texture3D> p_texture); | 
					
						
							| 
									
										
										
										
											2020-09-10 06:47:09 +03:00
										 |  |  | 	Ref<Texture3D> get_texture() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeTexture3D(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | class VisualShaderNodeCubemap : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeCubemap, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | 	Ref<TextureLayered> cube_map; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2019-10-11 10:26:57 +03:00
										 |  |  | 	enum Source { | 
					
						
							|  |  |  | 		SOURCE_TEXTURE, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		SOURCE_PORT, | 
					
						
							|  |  |  | 		SOURCE_MAX, | 
					
						
							| 
									
										
										
										
											2019-10-11 10:26:57 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	enum TextureType { | 
					
						
							|  |  |  | 		TYPE_DATA, | 
					
						
							|  |  |  | 		TYPE_COLOR, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		TYPE_NORMAL_MAP, | 
					
						
							|  |  |  | 		TYPE_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Source source = SOURCE_TEXTURE; | 
					
						
							|  |  |  | 	TextureType texture_type = TYPE_DATA; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | #ifndef DISABLE_DEPRECATED
 | 
					
						
							|  |  |  | 	void _set_cube_map_bind_compat_95126(Ref<Cubemap> p_cube_map); | 
					
						
							|  |  |  | 	Ref<Cubemap> _get_cube_map_bind_compat_95126() const; | 
					
						
							|  |  |  | 	static void _bind_compatibility_methods(); | 
					
						
							|  |  |  | #endif // DISABLE_DEPRECATED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2022-01-22 11:09:16 +03:00
										 |  |  | 	virtual bool is_input_port_default(int p_port, Shader::Mode p_mode) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const override; | 
					
						
							|  |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-11 10:26:57 +03:00
										 |  |  | 	void set_source(Source p_source); | 
					
						
							|  |  |  | 	Source get_source() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-04 14:43:55 +03:00
										 |  |  | 	void set_cube_map(Ref<TextureLayered> p_cube_map); | 
					
						
							|  |  |  | 	Ref<TextureLayered> get_cube_map() const; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_texture_type(TextureType p_texture_type); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	TextureType get_texture_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-11-26 14:25:35 +03:00
										 |  |  | 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | 	VisualShaderNodeCubemap(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeCubemap::TextureType) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeCubemap::Source) | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeLinearSceneDepth : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeLinearSceneDepth, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							| 
									
										
										
										
											2022-09-03 20:14:05 +02:00
										 |  |  | 	virtual bool has_output_port_preview(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-05 11:55:59 -08:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	VisualShaderNodeLinearSceneDepth(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-25 22:04:21 +02:00
										 |  |  | class VisualShaderNodeWorldPositionFromDepth : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeWorldPositionFromDepth, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 bool is_input_port_default(int p_port, Shader::Mode p_mode) 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 bool has_output_port_preview(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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-25 22:04:21 +02:00
										 |  |  | 	VisualShaderNodeWorldPositionFromDepth(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeScreenNormalWorldSpace : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeScreenNormalWorldSpace, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 bool is_input_port_default(int p_port, Shader::Mode p_mode) 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 bool has_output_port_preview(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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-25 22:04:21 +02:00
										 |  |  | 	VisualShaderNodeScreenNormalWorldSpace(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// OPS
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | class VisualShaderNodeFloatOp : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeFloatOp, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_ADD, | 
					
						
							|  |  |  | 		OP_SUB, | 
					
						
							|  |  |  | 		OP_MUL, | 
					
						
							|  |  |  | 		OP_DIV, | 
					
						
							|  |  |  | 		OP_MOD, | 
					
						
							|  |  |  | 		OP_POW, | 
					
						
							|  |  |  | 		OP_MAX, | 
					
						
							|  |  |  | 		OP_MIN, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 		OP_ATAN2, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		OP_STEP, | 
					
						
							|  |  |  | 		OP_ENUM_SIZE, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Operator op = OP_ADD; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_SCALAR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	VisualShaderNodeFloatOp(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeFloatOp::Operator) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeIntOp : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeIntOp, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_ADD, | 
					
						
							|  |  |  | 		OP_SUB, | 
					
						
							|  |  |  | 		OP_MUL, | 
					
						
							|  |  |  | 		OP_DIV, | 
					
						
							|  |  |  | 		OP_MOD, | 
					
						
							|  |  |  | 		OP_MAX, | 
					
						
							|  |  |  | 		OP_MIN, | 
					
						
							| 
									
										
										
										
											2021-12-03 11:35:38 +03:00
										 |  |  | 		OP_BITWISE_AND, | 
					
						
							|  |  |  | 		OP_BITWISE_OR, | 
					
						
							|  |  |  | 		OP_BITWISE_XOR, | 
					
						
							|  |  |  | 		OP_BITWISE_LEFT_SHIFT, | 
					
						
							|  |  |  | 		OP_BITWISE_RIGHT_SHIFT, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		OP_ENUM_SIZE, | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Operator op = OP_ADD; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_SCALAR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	VisualShaderNodeIntOp(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeIntOp::Operator) | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | class VisualShaderNodeUIntOp : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeUIntOp, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_ADD, | 
					
						
							|  |  |  | 		OP_SUB, | 
					
						
							|  |  |  | 		OP_MUL, | 
					
						
							|  |  |  | 		OP_DIV, | 
					
						
							|  |  |  | 		OP_MOD, | 
					
						
							|  |  |  | 		OP_MAX, | 
					
						
							|  |  |  | 		OP_MIN, | 
					
						
							|  |  |  | 		OP_BITWISE_AND, | 
					
						
							|  |  |  | 		OP_BITWISE_OR, | 
					
						
							|  |  |  | 		OP_BITWISE_XOR, | 
					
						
							|  |  |  | 		OP_BITWISE_LEFT_SHIFT, | 
					
						
							|  |  |  | 		OP_BITWISE_RIGHT_SHIFT, | 
					
						
							|  |  |  | 		OP_ENUM_SIZE, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	Operator op = OP_ADD; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_SCALAR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | 	VisualShaderNodeUIntOp(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeUIntOp::Operator) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVectorOp : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorOp, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_ADD, | 
					
						
							|  |  |  | 		OP_SUB, | 
					
						
							|  |  |  | 		OP_MUL, | 
					
						
							|  |  |  | 		OP_DIV, | 
					
						
							|  |  |  | 		OP_MOD, | 
					
						
							|  |  |  | 		OP_POW, | 
					
						
							|  |  |  | 		OP_MAX, | 
					
						
							|  |  |  | 		OP_MIN, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 		OP_CROSS, | 
					
						
							|  |  |  | 		OP_ATAN2, | 
					
						
							|  |  |  | 		OP_REFLECT, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		OP_STEP, | 
					
						
							|  |  |  | 		OP_ENUM_SIZE, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Operator op = OP_ADD; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_output_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	void set_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVectorOp(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeVectorOp::Operator) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | class VisualShaderNodeColorOp : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeColorOp, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_SCREEN, | 
					
						
							|  |  |  | 		OP_DIFFERENCE, | 
					
						
							|  |  |  | 		OP_DARKEN, | 
					
						
							|  |  |  | 		OP_LIGHTEN, | 
					
						
							|  |  |  | 		OP_OVERLAY, | 
					
						
							|  |  |  | 		OP_DODGE, | 
					
						
							|  |  |  | 		OP_BURN, | 
					
						
							|  |  |  | 		OP_SOFT_LIGHT, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		OP_HARD_LIGHT, | 
					
						
							|  |  |  | 		OP_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Operator op = OP_SCREEN; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_COLOR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	VisualShaderNodeColorOp(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeColorOp::Operator) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-11 19:08:37 +03:00
										 |  |  | ////////////////////////////////
 | 
					
						
							|  |  |  | /// TRANSFORM-TRANSFORM OPERATOR
 | 
					
						
							|  |  |  | ////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-11 19:08:37 +03:00
										 |  |  | class VisualShaderNodeTransformOp : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTransformOp, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_AxB, | 
					
						
							|  |  |  | 		OP_BxA, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 		OP_AxB_COMP, | 
					
						
							| 
									
										
										
										
											2021-08-11 19:08:37 +03:00
										 |  |  | 		OP_BxA_COMP, | 
					
						
							|  |  |  | 		OP_ADD, | 
					
						
							|  |  |  | 		OP_A_MINUS_B, | 
					
						
							|  |  |  | 		OP_B_MINUS_A, | 
					
						
							|  |  |  | 		OP_A_DIV_B, | 
					
						
							|  |  |  | 		OP_B_DIV_A, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		OP_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Operator op = OP_AxB; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TRANSFORM; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-11 19:08:37 +03:00
										 |  |  | 	VisualShaderNodeTransformOp(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-11 19:08:37 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTransformOp::Operator) | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// TRANSFORM-VECTOR MULTIPLICATION
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | class VisualShaderNodeTransformVecMult : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeTransformVecMult, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Operator { | 
					
						
							|  |  |  | 		OP_AxB, | 
					
						
							|  |  |  | 		OP_BxA, | 
					
						
							|  |  |  | 		OP_3x3_AxB, | 
					
						
							|  |  |  | 		OP_3x3_BxA, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		OP_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Operator op = OP_AxB; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_operator(Operator p_op); | 
					
						
							|  |  |  | 	Operator get_operator() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TRANSFORM; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	VisualShaderNodeTransformVecMult(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTransformVecMult::Operator) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | /// FLOAT FUNC
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | class VisualShaderNodeFloatFunc : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeFloatFunc, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_SIN, | 
					
						
							|  |  |  | 		FUNC_COS, | 
					
						
							|  |  |  | 		FUNC_TAN, | 
					
						
							|  |  |  | 		FUNC_ASIN, | 
					
						
							|  |  |  | 		FUNC_ACOS, | 
					
						
							|  |  |  | 		FUNC_ATAN, | 
					
						
							|  |  |  | 		FUNC_SINH, | 
					
						
							|  |  |  | 		FUNC_COSH, | 
					
						
							|  |  |  | 		FUNC_TANH, | 
					
						
							|  |  |  | 		FUNC_LOG, | 
					
						
							|  |  |  | 		FUNC_EXP, | 
					
						
							|  |  |  | 		FUNC_SQRT, | 
					
						
							|  |  |  | 		FUNC_ABS, | 
					
						
							|  |  |  | 		FUNC_SIGN, | 
					
						
							|  |  |  | 		FUNC_FLOOR, | 
					
						
							|  |  |  | 		FUNC_ROUND, | 
					
						
							|  |  |  | 		FUNC_CEIL, | 
					
						
							| 
									
										
										
										
											2022-06-05 18:15:10 -06:00
										 |  |  | 		FUNC_FRACT, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 		FUNC_SATURATE, | 
					
						
							|  |  |  | 		FUNC_NEGATE, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 		FUNC_ACOSH, | 
					
						
							|  |  |  | 		FUNC_ASINH, | 
					
						
							|  |  |  | 		FUNC_ATANH, | 
					
						
							|  |  |  | 		FUNC_DEGREES, | 
					
						
							|  |  |  | 		FUNC_EXP2, | 
					
						
							|  |  |  | 		FUNC_INVERSE_SQRT, | 
					
						
							|  |  |  | 		FUNC_LOG2, | 
					
						
							|  |  |  | 		FUNC_RADIANS, | 
					
						
							|  |  |  | 		FUNC_RECIPROCAL, | 
					
						
							|  |  |  | 		FUNC_ROUNDEVEN, | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 		FUNC_TRUNC, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_ONEMINUS, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_SIGN; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_function(Function p_func); | 
					
						
							|  |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_SCALAR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	VisualShaderNodeFloatFunc(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeFloatFunc::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// INT FUNC
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeIntFunc : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeIntFunc, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_ABS, | 
					
						
							|  |  |  | 		FUNC_NEGATE, | 
					
						
							|  |  |  | 		FUNC_SIGN, | 
					
						
							| 
									
										
										
										
											2021-12-03 11:35:38 +03:00
										 |  |  | 		FUNC_BITWISE_NOT, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_SIGN; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_function(Function p_func); | 
					
						
							|  |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_SCALAR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	VisualShaderNodeIntFunc(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeIntFunc::Function) | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// UINT FUNC
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeUIntFunc : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeUIntFunc, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_NEGATE, | 
					
						
							|  |  |  | 		FUNC_BITWISE_NOT, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	Function func = FUNC_NEGATE; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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_function(Function p_func); | 
					
						
							|  |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_SCALAR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | 	VisualShaderNodeUIntFunc(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeUIntFunc::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// VECTOR FUNC
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVectorFunc : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorFunc, VisualShaderNodeVectorBase); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void _update_default_input_values(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_NORMALIZE, | 
					
						
							|  |  |  | 		FUNC_SATURATE, | 
					
						
							|  |  |  | 		FUNC_NEGATE, | 
					
						
							|  |  |  | 		FUNC_RECIPROCAL, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 		FUNC_ABS, | 
					
						
							|  |  |  | 		FUNC_ACOS, | 
					
						
							|  |  |  | 		FUNC_ACOSH, | 
					
						
							|  |  |  | 		FUNC_ASIN, | 
					
						
							|  |  |  | 		FUNC_ASINH, | 
					
						
							|  |  |  | 		FUNC_ATAN, | 
					
						
							|  |  |  | 		FUNC_ATANH, | 
					
						
							|  |  |  | 		FUNC_CEIL, | 
					
						
							|  |  |  | 		FUNC_COS, | 
					
						
							|  |  |  | 		FUNC_COSH, | 
					
						
							|  |  |  | 		FUNC_DEGREES, | 
					
						
							|  |  |  | 		FUNC_EXP, | 
					
						
							|  |  |  | 		FUNC_EXP2, | 
					
						
							|  |  |  | 		FUNC_FLOOR, | 
					
						
							| 
									
										
										
										
											2022-06-05 18:15:10 -06:00
										 |  |  | 		FUNC_FRACT, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 		FUNC_INVERSE_SQRT, | 
					
						
							|  |  |  | 		FUNC_LOG, | 
					
						
							|  |  |  | 		FUNC_LOG2, | 
					
						
							|  |  |  | 		FUNC_RADIANS, | 
					
						
							|  |  |  | 		FUNC_ROUND, | 
					
						
							|  |  |  | 		FUNC_ROUNDEVEN, | 
					
						
							|  |  |  | 		FUNC_SIGN, | 
					
						
							|  |  |  | 		FUNC_SIN, | 
					
						
							|  |  |  | 		FUNC_SINH, | 
					
						
							|  |  |  | 		FUNC_SQRT, | 
					
						
							|  |  |  | 		FUNC_TAN, | 
					
						
							|  |  |  | 		FUNC_TANH, | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 		FUNC_TRUNC, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_ONEMINUS, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_NORMALIZE; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_output_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	void set_function(Function p_func); | 
					
						
							|  |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVectorFunc(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeVectorFunc::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// COLOR FUNC
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeColorFunc : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeColorFunc, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_GRAYSCALE, | 
					
						
							| 
									
										
										
										
											2022-05-07 09:49:12 +03:00
										 |  |  | 		FUNC_HSV2RGB, | 
					
						
							|  |  |  | 		FUNC_RGB2HSV, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_SEPIA, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_GRAYSCALE; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-26 15:08:25 +02:00
										 |  |  | 	void set_function(Function p_func); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_COLOR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	VisualShaderNodeColorFunc(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeColorFunc::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// TRANSFORM FUNC
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeTransformFunc : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeTransformFunc, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_INVERSE, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_TRANSPOSE, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_INVERSE; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-26 15:08:25 +02:00
										 |  |  | 	void set_function(Function p_func); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TRANSFORM; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	VisualShaderNodeTransformFunc(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTransformFunc::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-05 15:53:53 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// UV FUNC
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeUVFunc : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeUVFunc, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_PANNING, | 
					
						
							|  |  |  | 		FUNC_SCALING, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	Function func = FUNC_PANNING; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2022-01-22 11:09:16 +03:00
										 |  |  | 	virtual bool is_input_port_default(int p_port, Shader::Mode p_mode) const override; | 
					
						
							| 
									
										
										
										
											2021-06-05 15:53:53 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	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 bool is_show_prop_names() 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_function(Function p_func); | 
					
						
							| 
									
										
										
										
											2021-06-05 15:53:53 +03:00
										 |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-05 15:53:53 +03:00
										 |  |  | 	VisualShaderNodeUVFunc(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeUVFunc::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// UV POLARCOORD
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeUVPolarCoord : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeUVPolarCoord, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 bool is_input_port_default(int p_port, Shader::Mode p_mode) 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TEXTURES; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	VisualShaderNodeUVPolarCoord(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// DOT
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeDotProduct : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeDotProduct, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_VECTOR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	VisualShaderNodeDotProduct(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// LENGTH
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVectorLen : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorLen, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVectorLen(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// DETERMINANT
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeDeterminant : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeDeterminant, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_VECTOR; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	VisualShaderNodeDeterminant(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// CLAMP
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | class VisualShaderNodeClamp : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeClamp, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_FLOAT, | 
					
						
							|  |  |  | 		OP_TYPE_INT, | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | 		OP_TYPE_UINT, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_FLOAT; | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	OpType get_op_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { | 
					
						
							|  |  |  | 		if (op_type == OP_TYPE_FLOAT || op_type == OP_TYPE_INT || op_type == OP_TYPE_UINT) { | 
					
						
							|  |  |  | 			return CATEGORY_SCALAR; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return CATEGORY_VECTOR; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	VisualShaderNodeClamp(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeClamp::OpType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | /// DERIVATIVE FUNCTION
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | class VisualShaderNodeDerivativeFunc : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeDerivativeFunc, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_SUM, | 
					
						
							|  |  |  | 		FUNC_X, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_Y, | 
					
						
							|  |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-26 14:31:37 +03:00
										 |  |  | 	enum Precision { | 
					
						
							|  |  |  | 		PRECISION_NONE, | 
					
						
							|  |  |  | 		PRECISION_COARSE, | 
					
						
							|  |  |  | 		PRECISION_FINE, | 
					
						
							|  |  |  | 		PRECISION_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | 	OpType op_type = OP_TYPE_SCALAR; | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_SUM; | 
					
						
							| 
									
										
										
										
											2023-01-26 14:31:37 +03:00
										 |  |  | 	Precision precision = PRECISION_NONE; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2023-01-26 14:31:37 +03:00
										 |  |  | 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							|  |  |  | 	OpType get_op_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-26 15:08:25 +02:00
										 |  |  | 	void set_function(Function p_func); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-26 14:31:37 +03:00
										 |  |  | 	void set_precision(Precision p_precision); | 
					
						
							|  |  |  | 	Precision get_precision() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | 	VisualShaderNodeDerivativeFunc(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-28 21:36:10 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeDerivativeFunc::OpType) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeDerivativeFunc::Function) | 
					
						
							| 
									
										
										
										
											2023-01-26 14:31:37 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeDerivativeFunc::Precision) | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// FACEFORWARD
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeFaceForward : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeFaceForward, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_output_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeFaceForward(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// OUTER PRODUCT
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeOuterProduct : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeOuterProduct, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TRANSFORM; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 	VisualShaderNodeOuterProduct(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// STEP
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | class VisualShaderNodeStep : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeStep, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_2D_SCALAR, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_4D_SCALAR, | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_SCALAR; | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2023-06-22 10:33:40 +03:00
										 |  |  | 	virtual int get_default_input_port(PortType p_type) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	OpType get_op_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { | 
					
						
							|  |  |  | 		if (op_type == OP_TYPE_SCALAR) { | 
					
						
							|  |  |  | 			return CATEGORY_SCALAR; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return CATEGORY_VECTOR; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	VisualShaderNodeStep(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeStep::OpType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// SMOOTHSTEP
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | class VisualShaderNodeSmoothStep : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeSmoothStep, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_2D_SCALAR, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_4D_SCALAR, | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_SCALAR; | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2023-06-22 10:33:40 +03:00
										 |  |  | 	virtual int get_default_input_port(PortType p_type) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	OpType get_op_type() const; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { | 
					
						
							|  |  |  | 		if (op_type == OP_TYPE_SCALAR) { | 
					
						
							|  |  |  | 			return CATEGORY_SCALAR; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return CATEGORY_VECTOR; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	VisualShaderNodeSmoothStep(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeSmoothStep::OpType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// DISTANCE
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVectorDistance : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorDistance, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVectorDistance(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// REFRACT
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-07 18:03:16 +02:00
										 |  |  | class VisualShaderNodeVectorRefract : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorRefract, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_output_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2022-08-07 18:03:16 +02:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeVectorRefract(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// MIX
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | class VisualShaderNodeMix : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeMix, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_2D_SCALAR, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_4D_SCALAR, | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_SCALAR; | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	OpType get_op_type() const; | 
					
						
							| 
									
										
										
										
											2019-08-03 18:12:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-08-03 18:12:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-08-03 18:12:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { | 
					
						
							|  |  |  | 		if (op_type == OP_TYPE_SCALAR) { | 
					
						
							|  |  |  | 			return CATEGORY_SCALAR; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return CATEGORY_VECTOR; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	VisualShaderNodeMix(); | 
					
						
							| 
									
										
										
										
											2019-08-03 18:12:33 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeMix::OpType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// COMPOSE
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVectorCompose : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorCompose, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_output_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-15 17:28:06 +03:00
										 |  |  | 	VisualShaderNodeVectorCompose(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-15 17:28:06 +03:00
										 |  |  | class VisualShaderNodeTransformCompose : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeTransformCompose, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TRANSFORM; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-15 17:28:06 +03:00
										 |  |  | 	VisualShaderNodeTransformCompose(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// DECOMPOSE
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | class VisualShaderNodeVectorDecompose : public VisualShaderNodeVectorBase { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVectorDecompose, VisualShaderNodeVectorBase); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_input_port_count() const override; | 
					
						
							|  |  |  | 	virtual String get_input_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 	virtual void set_op_type(OpType p_op_type) override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-15 17:28:06 +03:00
										 |  |  | 	VisualShaderNodeVectorDecompose(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-15 17:28:06 +03:00
										 |  |  | class VisualShaderNodeTransformDecompose : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeTransformDecompose, VisualShaderNode); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_TRANSFORM; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-15 17:28:06 +03:00
										 |  |  | 	VisualShaderNodeTransformDecompose(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | /// PARAMETERS
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeFloatParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeFloatParameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-06 15:11:03 +03:00
										 |  |  | public: | 
					
						
							|  |  |  | 	enum Hint { | 
					
						
							|  |  |  | 		HINT_NONE, | 
					
						
							|  |  |  | 		HINT_RANGE, | 
					
						
							|  |  |  | 		HINT_RANGE_STEP, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		HINT_MAX, | 
					
						
							| 
									
										
										
										
											2020-02-06 15:11:03 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Hint hint = HINT_NONE; | 
					
						
							|  |  |  | 	float hint_range_min = 0.0f; | 
					
						
							|  |  |  | 	float hint_range_max = 1.0f; | 
					
						
							|  |  |  | 	float hint_range_step = 0.1f; | 
					
						
							|  |  |  | 	bool default_value_enabled = false; | 
					
						
							|  |  |  | 	float default_value = 0.0f; | 
					
						
							| 
									
										
										
										
											2020-02-06 15:11:03 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 14:32:59 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-06 15:11:03 +03:00
										 |  |  | 	void set_hint(Hint p_hint); | 
					
						
							|  |  |  | 	Hint get_hint() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_min(float p_value); | 
					
						
							|  |  |  | 	float get_min() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_max(float p_value); | 
					
						
							|  |  |  | 	float get_max() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_step(float p_value); | 
					
						
							|  |  |  | 	float get_step() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	void set_default_value_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_default_value_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_default_value(float p_value); | 
					
						
							|  |  |  | 	float get_default_value() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-06 15:11:03 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeFloatParameter(); | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeFloatParameter::Hint) | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeIntParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeIntParameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Hint { | 
					
						
							|  |  |  | 		HINT_NONE, | 
					
						
							|  |  |  | 		HINT_RANGE, | 
					
						
							|  |  |  | 		HINT_RANGE_STEP, | 
					
						
							| 
									
										
										
										
											2024-07-13 14:30:08 -04:00
										 |  |  | 		HINT_ENUM, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		HINT_MAX, | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Hint hint = HINT_NONE; | 
					
						
							|  |  |  | 	int hint_range_min = 0; | 
					
						
							|  |  |  | 	int hint_range_max = 100; | 
					
						
							|  |  |  | 	int hint_range_step = 1; | 
					
						
							| 
									
										
										
										
											2024-07-13 14:30:08 -04:00
										 |  |  | 	PackedStringArray hint_enum_names; | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	bool default_value_enabled = false; | 
					
						
							|  |  |  | 	int default_value = 0; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 14:32:59 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 	void set_hint(Hint p_hint); | 
					
						
							|  |  |  | 	Hint get_hint() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_min(int p_value); | 
					
						
							|  |  |  | 	int get_min() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_max(int p_value); | 
					
						
							|  |  |  | 	int get_max() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_step(int p_value); | 
					
						
							|  |  |  | 	int get_step() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-13 14:30:08 -04:00
										 |  |  | 	void set_enum_names(const PackedStringArray &p_names); | 
					
						
							|  |  |  | 	PackedStringArray get_enum_names() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	void set_default_value_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_default_value_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_default_value(int p_value); | 
					
						
							|  |  |  | 	int get_default_value() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeIntParameter(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeIntParameter::Hint) | 
					
						
							| 
									
										
										
										
											2020-02-06 15:11:03 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | class VisualShaderNodeUIntParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeUIntParameter, VisualShaderNodeParameter); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | 	bool default_value_enabled = false; | 
					
						
							|  |  |  | 	int default_value = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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(int p_value); | 
					
						
							|  |  |  | 	int 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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeUIntParameter(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeBooleanParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeBooleanParameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	bool default_value_enabled = false; | 
					
						
							|  |  |  | 	bool default_value = false; | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 14:32:59 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	void set_default_value_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_default_value_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_default_value(bool p_value); | 
					
						
							|  |  |  | 	bool get_default_value() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeBooleanParameter(); | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeColorParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeColorParameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	bool default_value_enabled = false; | 
					
						
							|  |  |  | 	Color default_value = Color(1.0, 1.0, 1.0, 1.0); | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 14:32:59 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	void set_default_value_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_default_value_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_default_value(const Color &p_value); | 
					
						
							|  |  |  | 	Color get_default_value() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeColorParameter(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeVec2Parameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVec2Parameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | 	bool default_value_enabled = false; | 
					
						
							|  |  |  | 	Vector2 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 Vector2 &p_value); | 
					
						
							|  |  |  | 	Vector2 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeVec2Parameter(); | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeVec3Parameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVec3Parameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	bool default_value_enabled = false; | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	Vector3 default_value; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 14:32:59 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	void set_default_value_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_default_value_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_default_value(const Vector3 &p_value); | 
					
						
							|  |  |  | 	Vector3 get_default_value() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeVec3Parameter(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeVec4Parameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeVec4Parameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | 	bool default_value_enabled = false; | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	Vector4 default_value; | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	void set_default_value(const Vector4 &p_value); | 
					
						
							|  |  |  | 	Vector4 get_default_value() const; | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							|  |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeVec4Parameter(); | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeTransformParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTransformParameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	bool default_value_enabled = false; | 
					
						
							| 
									
										
										
										
											2020-10-17 01:08:21 -04:00
										 |  |  | 	Transform3D default_value = Transform3D(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 14:32:59 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 	virtual bool is_use_prop_slots() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	void set_default_value_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_default_value_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-17 01:08:21 -04:00
										 |  |  | 	void set_default_value(const Transform3D &p_value); | 
					
						
							|  |  |  | 	Transform3D get_default_value() const; | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-27 14:33:27 +03:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeTransformParameter(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeTextureParameter : public VisualShaderNodeParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTextureParameter, VisualShaderNodeParameter); | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | public: | 
					
						
							|  |  |  | 	enum TextureType { | 
					
						
							|  |  |  | 		TYPE_DATA, | 
					
						
							|  |  |  | 		TYPE_COLOR, | 
					
						
							| 
									
										
										
										
											2020-12-23 09:34:26 +00:00
										 |  |  | 		TYPE_NORMAL_MAP, | 
					
						
							| 
									
										
										
										
											2021-12-09 20:29:06 +01:00
										 |  |  | 		TYPE_ANISOTROPY, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		TYPE_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum ColorDefault { | 
					
						
							|  |  |  | 		COLOR_DEFAULT_WHITE, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		COLOR_DEFAULT_BLACK, | 
					
						
							| 
									
										
										
										
											2021-08-14 18:29:52 +02:00
										 |  |  | 		COLOR_DEFAULT_TRANSPARENT, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		COLOR_DEFAULT_MAX, | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-16 11:41:29 +03:00
										 |  |  | 	enum TextureFilter { | 
					
						
							|  |  |  | 		FILTER_DEFAULT, | 
					
						
							|  |  |  | 		FILTER_NEAREST, | 
					
						
							|  |  |  | 		FILTER_LINEAR, | 
					
						
							|  |  |  | 		FILTER_NEAREST_MIPMAP, | 
					
						
							|  |  |  | 		FILTER_LINEAR_MIPMAP, | 
					
						
							|  |  |  | 		FILTER_NEAREST_MIPMAP_ANISOTROPIC, | 
					
						
							|  |  |  | 		FILTER_LINEAR_MIPMAP_ANISOTROPIC, | 
					
						
							|  |  |  | 		FILTER_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum TextureRepeat { | 
					
						
							|  |  |  | 		REPEAT_DEFAULT, | 
					
						
							|  |  |  | 		REPEAT_ENABLED, | 
					
						
							|  |  |  | 		REPEAT_DISABLED, | 
					
						
							|  |  |  | 		REPEAT_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-05 11:55:59 -08:00
										 |  |  | 	enum TextureSource { | 
					
						
							|  |  |  | 		SOURCE_NONE, | 
					
						
							|  |  |  | 		SOURCE_SCREEN, | 
					
						
							|  |  |  | 		SOURCE_DEPTH, | 
					
						
							|  |  |  | 		SOURCE_NORMAL_ROUGHNESS, | 
					
						
							|  |  |  | 		SOURCE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-09 11:29:23 +03:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	TextureType texture_type = TYPE_DATA; | 
					
						
							|  |  |  | 	ColorDefault color_default = COLOR_DEFAULT_WHITE; | 
					
						
							| 
									
										
										
										
											2021-12-16 11:41:29 +03:00
										 |  |  | 	TextureFilter texture_filter = FILTER_DEFAULT; | 
					
						
							|  |  |  | 	TextureRepeat texture_repeat = REPEAT_DEFAULT; | 
					
						
							| 
									
										
										
										
											2023-01-05 11:55:59 -08:00
										 |  |  | 	TextureSource texture_source = SOURCE_NONE; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual int get_output_port_count() const override; | 
					
						
							|  |  |  | 	virtual PortType get_output_port_type(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	virtual HashMap<StringName, String> get_editable_properties_names() const override; | 
					
						
							| 
									
										
										
										
											2021-12-16 11:41:29 +03:00
										 |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							| 
									
										
										
										
											2023-10-21 16:37:15 +03:00
										 |  |  | 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2020-07-26 04:04:07 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_texture_type(TextureType p_type); | 
					
						
							|  |  |  | 	TextureType get_texture_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_color_default(ColorDefault p_default); | 
					
						
							|  |  |  | 	ColorDefault get_color_default() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-16 11:41:29 +03:00
										 |  |  | 	void set_texture_filter(TextureFilter p_filter); | 
					
						
							|  |  |  | 	TextureFilter get_texture_filter() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_texture_repeat(TextureRepeat p_repeat); | 
					
						
							|  |  |  | 	TextureRepeat get_texture_repeat() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-05 11:55:59 -08:00
										 |  |  | 	void set_texture_source(TextureSource p_source); | 
					
						
							|  |  |  | 	TextureSource get_texture_source() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	bool is_qualifier_supported(Qualifier p_qual) const override; | 
					
						
							| 
									
										
										
										
											2021-04-04 15:09:29 +03:00
										 |  |  | 	bool is_convertible_to_constant() const override; | 
					
						
							| 
									
										
										
										
											2020-05-05 11:25:48 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeTextureParameter(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTextureParameter::TextureType) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTextureParameter::ColorDefault) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTextureParameter::TextureFilter) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTextureParameter::TextureRepeat) | 
					
						
							| 
									
										
										
										
											2023-01-05 11:55:59 -08:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeTextureParameter::TextureSource) | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeTexture2DParameter : public VisualShaderNodeTextureParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTexture2DParameter, VisualShaderNodeTextureParameter); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	virtual String get_caption() 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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeTexture2DParameter(); | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-22 20:38:58 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeTextureParameterTriplanar : public VisualShaderNodeTextureParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTextureParameterTriplanar, VisualShaderNodeTextureParameter); | 
					
						
							| 
									
										
										
										
											2019-07-12 12:14:34 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-07-12 12:14:34 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-12 12:14:34 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-22 20:31:23 +03:00
										 |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 11:09:16 +03:00
										 |  |  | 	virtual bool is_input_port_default(int p_port, Shader::Mode p_mode) const override; | 
					
						
							| 
									
										
										
										
											2019-10-03 10:40:26 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-07 08:46:51 +03:00
										 |  |  | 	virtual String generate_global_per_node(Shader::Mode p_mode, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global_per_func(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2022-09-07 07:02:07 +03:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-12 12:14:34 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeTextureParameterTriplanar(); | 
					
						
							| 
									
										
										
										
											2019-07-12 12:14:34 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeTexture2DArrayParameter : public VisualShaderNodeTextureParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTexture2DArrayParameter, VisualShaderNodeTextureParameter); | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeTexture2DArrayParameter(); | 
					
						
							| 
									
										
										
										
											2020-02-18 14:45:23 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeTexture3DParameter : public VisualShaderNodeTextureParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeTexture3DParameter, VisualShaderNodeTextureParameter); | 
					
						
							| 
									
										
										
										
											2020-09-10 06:47:09 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	virtual String get_caption() 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeTexture3DParameter(); | 
					
						
							| 
									
										
										
										
											2020-09-10 06:47:09 +03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | class VisualShaderNodeCubemapParameter : public VisualShaderNodeTextureParameter { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeCubemapParameter, VisualShaderNodeTextureParameter); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							|  |  |  | 	virtual String get_output_port_name(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-27 12:22:43 +03:00
										 |  |  | 	VisualShaderNodeCubemapParameter(); | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// IF
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeIf : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeIf, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_CONDITIONAL; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 	VisualShaderNodeIf(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// SWITCH
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeSwitch : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeSwitch, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | public: | 
					
						
							|  |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_FLOAT, | 
					
						
							|  |  |  | 		OP_TYPE_INT, | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | 		OP_TYPE_UINT, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 		OP_TYPE_BOOLEAN, | 
					
						
							|  |  |  | 		OP_TYPE_TRANSFORM, | 
					
						
							|  |  |  | 		OP_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_FLOAT; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | 	OpType get_op_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_CONDITIONAL; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-13 15:24:04 +03:00
										 |  |  | 	VisualShaderNodeSwitch(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 12:23:04 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeSwitch::OpType) | 
					
						
							| 
									
										
										
										
											2019-09-03 14:46:31 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// FRESNEL
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeFresnel : public VisualShaderNode { | 
					
						
							| 
									
										
										
										
											2019-03-19 14:35:57 -04:00
										 |  |  | 	GDCLASS(VisualShaderNodeFresnel, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-22 11:09:16 +03:00
										 |  |  | 	virtual bool is_input_port_default(int p_port, Shader::Mode p_mode) const override; | 
					
						
							| 
									
										
										
										
											2020-07-27 09:18:37 +03:00
										 |  |  | 	virtual bool is_generate_input_var(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-05 19:21:20 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-19 13:07:00 +03:00
										 |  |  | 	VisualShaderNodeFresnel(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// Is
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeIs : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeIs, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_IS_INF, | 
					
						
							|  |  |  | 		FUNC_IS_NAN, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_IS_INF; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_function(Function p_func); | 
					
						
							|  |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_CONDITIONAL; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	VisualShaderNodeIs(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeIs::Function) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// Compare
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeCompare : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeCompare, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-01-23 10:31:45 +03:00
										 |  |  | 	enum ComparisonType { | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 		CTYPE_SCALAR, | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 		CTYPE_SCALAR_INT, | 
					
						
							| 
									
										
										
										
											2022-12-27 20:49:11 +03:00
										 |  |  | 		CTYPE_SCALAR_UINT, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		CTYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		CTYPE_VECTOR_3D, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		CTYPE_VECTOR_4D, | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 		CTYPE_BOOLEAN, | 
					
						
							| 
									
										
										
										
											2020-02-25 17:50:49 +03:00
										 |  |  | 		CTYPE_TRANSFORM, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		CTYPE_MAX, | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum Function { | 
					
						
							|  |  |  | 		FUNC_EQUAL, | 
					
						
							|  |  |  | 		FUNC_NOT_EQUAL, | 
					
						
							|  |  |  | 		FUNC_GREATER_THAN, | 
					
						
							|  |  |  | 		FUNC_GREATER_THAN_EQUAL, | 
					
						
							|  |  |  | 		FUNC_LESS_THAN, | 
					
						
							|  |  |  | 		FUNC_LESS_THAN_EQUAL, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		FUNC_MAX, | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	enum Condition { | 
					
						
							|  |  |  | 		COND_ALL, | 
					
						
							|  |  |  | 		COND_ANY, | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 		COND_MAX, | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	ComparisonType comparison_type = CTYPE_SCALAR; | 
					
						
							| 
									
										
										
										
											2020-09-05 15:46:12 +03:00
										 |  |  | 	Function func = FUNC_EQUAL; | 
					
						
							|  |  |  | 	Condition condition = COND_ALL; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-23 10:31:45 +03:00
										 |  |  | 	void set_comparison_type(ComparisonType p_type); | 
					
						
							|  |  |  | 	ComparisonType get_comparison_type() const; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_function(Function p_func); | 
					
						
							|  |  |  | 	Function get_function() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-23 09:14:31 +02:00
										 |  |  | 	void set_condition(Condition p_cond); | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	Condition get_condition() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 	virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const override; | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_CONDITIONAL; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | 	VisualShaderNodeCompare(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-23 10:31:45 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeCompare::ComparisonType) | 
					
						
							| 
									
										
										
										
											2019-07-08 10:05:33 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeCompare::Function) | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeCompare::Condition) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | class VisualShaderNodeMultiplyAdd : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeMultiplyAdd, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-09-15 11:06:18 +03:00
										 |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_SCALAR, | 
					
						
							| 
									
										
										
										
											2022-02-01 11:32:01 +03:00
										 |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_3D, | 
					
						
							| 
									
										
										
										
											2022-04-12 19:09:29 +02:00
										 |  |  | 		OP_TYPE_VECTOR_4D, | 
					
						
							| 
									
										
										
										
											2020-09-15 11:06:18 +03:00
										 |  |  | 		OP_TYPE_MAX, | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2020-09-15 11:06:18 +03:00
										 |  |  | 	OpType op_type = OP_TYPE_SCALAR; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-07-10 21:25:37 +01:00
										 |  |  | 	virtual String get_caption() const override; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 21:25:37 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 21:25:37 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-20 12:07:26 +02:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-14 13:38:22 +03:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							| 
									
										
										
										
											2020-09-15 11:06:18 +03:00
										 |  |  | 	OpType get_op_type() const; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 21:25:37 +01:00
										 |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { | 
					
						
							|  |  |  | 		if (op_type == OP_TYPE_SCALAR) { | 
					
						
							|  |  |  | 			return CATEGORY_SCALAR; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return CATEGORY_VECTOR; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 	VisualShaderNodeMultiplyAdd(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-15 11:06:18 +03:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeMultiplyAdd::OpType) | 
					
						
							| 
									
										
										
										
											2020-02-14 23:09:53 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-27 22:17:58 +03:00
										 |  |  | class VisualShaderNodeBillboard : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeBillboard, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum BillboardType { | 
					
						
							|  |  |  | 		BILLBOARD_TYPE_DISABLED, | 
					
						
							|  |  |  | 		BILLBOARD_TYPE_ENABLED, | 
					
						
							|  |  |  | 		BILLBOARD_TYPE_FIXED_Y, | 
					
						
							|  |  |  | 		BILLBOARD_TYPE_PARTICLES, | 
					
						
							|  |  |  | 		BILLBOARD_TYPE_MAX, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	BillboardType billboard_type = BILLBOARD_TYPE_ENABLED; | 
					
						
							|  |  |  | 	bool keep_scale = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual bool is_show_prop_names() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_billboard_type(BillboardType p_billboard_type); | 
					
						
							|  |  |  | 	BillboardType get_billboard_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_keep_scale_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_keep_scale_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-27 22:17:58 +03:00
										 |  |  | 	VisualShaderNodeBillboard(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | VARIANT_ENUM_CAST(VisualShaderNodeBillboard::BillboardType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// DistanceFade
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeDistanceFade : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeDistanceFade, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							| 
									
										
										
										
											2022-09-03 20:14:05 +02:00
										 |  |  | 	virtual bool has_output_port_preview(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	VisualShaderNodeDistanceFade(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeProximityFade : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeProximityFade, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							| 
									
										
										
										
											2022-09-03 20:14:05 +02:00
										 |  |  | 	virtual bool has_output_port_preview(int p_port) const override; | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-20 22:28:39 +03:00
										 |  |  | 	virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const override; | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	VisualShaderNodeProximityFade(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class VisualShaderNodeRandomRange : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeRandomRange, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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_per_node(Shader::Mode p_mode, 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	VisualShaderNodeRandomRange(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-21 17:22:51 -07:00
										 |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | /// Remap
 | 
					
						
							|  |  |  | ///////////////////////////////////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | class VisualShaderNodeRemap : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeRemap, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-21 17:22:51 -07:00
										 |  |  | public: | 
					
						
							|  |  |  | 	enum OpType { | 
					
						
							|  |  |  | 		OP_TYPE_SCALAR, | 
					
						
							|  |  |  | 		OP_TYPE_VECTOR_2D, | 
					
						
							|  |  |  | 		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, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  | 	OpType op_type = OP_TYPE_SCALAR; | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-21 17:22:51 -07:00
										 |  |  | 	void set_op_type(OpType p_op_type); | 
					
						
							|  |  |  | 	OpType get_op_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	virtual Vector<StringName> get_editable_properties() const override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-21 17:22:51 -07:00
										 |  |  | 	virtual Category get_category() const override { | 
					
						
							|  |  |  | 		if (op_type == OP_TYPE_SCALAR) { | 
					
						
							|  |  |  | 			return CATEGORY_SCALAR; | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return CATEGORY_VECTOR; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-11 00:39:11 +02:00
										 |  |  | 	VisualShaderNodeRemap(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-21 17:22:51 -07:00
										 |  |  | VARIANT_ENUM_CAST(VisualShaderNodeRemap::OpType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-25 22:04:21 +02:00
										 |  |  | class VisualShaderNodeRotationByAxis : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeRotationByAxis, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 bool has_output_port_preview(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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-09 15:02:58 +01:00
										 |  |  | 	virtual Category get_category() const override { return CATEGORY_UTILITY; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-25 22:04:21 +02:00
										 |  |  | 	VisualShaderNodeRotationByAxis(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-07 16:48:03 +02:00
										 |  |  | class VisualShaderNodeReroute : public VisualShaderNode { | 
					
						
							|  |  |  | 	GDCLASS(VisualShaderNodeReroute, VisualShaderNode); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	PortType input_port_type = PORT_TYPE_SCALAR; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 bool has_output_port_preview(int p_port) const override { return false; } | 
					
						
							|  |  |  | 	virtual bool is_output_port_expandable(int p_port) const override { return false; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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 Category get_category() const override { return CATEGORY_SPECIAL; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void _set_port_type(PortType p_type); | 
					
						
							|  |  |  | 	PortType get_port_type() const { return input_port_type; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	VisualShaderNodeReroute(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 18:15:42 -03:00
										 |  |  | #endif // VISUAL_SHADER_NODES_H
 |