2023-01-05 13:25:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  visual_shader_nodes.cpp                                               */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                         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-08-29 22:38:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "visual_shader_nodes.h" 
  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-11 22:29:09 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "scene/resources/image_texture.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector Base
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorBase : : PortType  VisualShaderNodeVectorBase : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorBase : : PortType  VisualShaderNodeVectorBase : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorBase : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorBase : : OpType  VisualShaderNodeVectorBase : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorBase : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " type " ) ,  & VisualShaderNodeVectorBase : : set_op_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeVectorBase : : get_op_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Vector2,Vector3,Vector4 " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVectorBase : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorBase : : VisualShaderNodeVectorBase ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-30 11:45:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Constants Base
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeConstant : : VisualShaderNodeConstant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Scalar(Float)
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatConstant : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-03 11:11:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " FloatConstant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatConstant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatConstant : : PortType  VisualShaderNodeFloatConstant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatConstant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatConstant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatConstant : : PortType  VisualShaderNodeFloatConstant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatConstant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatConstant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  vformat ( " %.6f " ,  constant )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatConstant : : set_constant ( float  p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( Math : : is_equal_approx ( constant ,  p_constant ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								float  VisualShaderNodeFloatConstant : : get_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeFloatConstant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatConstant : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeFloatConstant : : set_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeFloatConstant : : get_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.
- Renames PackedIntArray to PackedInt32Array.
- Renames PackedFloatArray to PackedFloat32Array.
- Adds PackedInt64Array and PackedFloat64Array.
- Renames Variant::REAL to Variant::FLOAT for consistency.
Packed arrays are for storing large amount of data and creating stuff like
meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of
memory. That said, many users requested the ability to have 64 bits packed
arrays for their games, so this is just an optional added type.
For Variant, the float datatype is always 64 bits, and exposed as `float`.
We still have `real_t` which is the datatype that can change from 32 to 64
bits depending on a compile flag (not entirely working right now, but that's
the idea). It affects math related datatypes and code only.
Neither Variant nor PackedArray make use of real_t, which is only intended
for math precision, so the term is removed from there to keep only float.
											 
										 
										
											2020-02-24 15:20:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : FLOAT ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatConstant : : VisualShaderNodeFloatConstant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Scalar(Int)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntConstant : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-03 11:11:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " IntConstant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntConstant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntConstant : : PortType  VisualShaderNodeIntConstant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntConstant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntConstant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntConstant : : PortType  VisualShaderNodeIntConstant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntConstant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntConstant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  itos ( constant )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntConstant : : set_constant ( int  p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant  = =  p_constant )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntConstant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeIntConstant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIntConstant : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeIntConstant : : set_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeIntConstant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntConstant : : VisualShaderNodeIntConstant ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Scalar(UInt)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntConstant : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " UIntConstant " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntConstant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntConstant : : PortType  VisualShaderNodeUIntConstant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntConstant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntConstant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntConstant : : PortType  VisualShaderNodeUIntConstant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntConstant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntConstant : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  itos ( constant )  +  " u; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntConstant : : set_constant ( int  p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant  = =  p_constant )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntConstant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeUIntConstant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntConstant : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeUIntConstant : : set_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeUIntConstant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntConstant : : VisualShaderNodeUIntConstant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Boolean
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanConstant : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-03 11:11:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " BooleanConstant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeBooleanConstant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBooleanConstant : : PortType  VisualShaderNodeBooleanConstant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanConstant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeBooleanConstant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBooleanConstant : : PortType  VisualShaderNodeBooleanConstant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanConstant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanConstant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  ( constant  ?  " true "  :  " false " )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeBooleanConstant : : set_constant ( bool  p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant  = =  p_constant )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanConstant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeBooleanConstant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeBooleanConstant : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeBooleanConstant : : set_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeBooleanConstant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBooleanConstant : : VisualShaderNodeBooleanConstant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								////////////// Color
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorConstant : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-03 11:11:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " ColorConstant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeColorConstant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorConstant : : PortType  VisualShaderNodeColorConstant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorConstant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeColorConstant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorConstant : : PortType  VisualShaderNodeColorConstant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  PORT_TYPE_VECTOR_4D  :  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorConstant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-20 18:45:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeColorConstant : : is_output_port_expandable ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorConstant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  vformat ( " vec4(%.6f, %.6f, %.6f, %.6f) " ,  constant . r ,  constant . g ,  constant . b ,  constant . a )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeColorConstant : : set_constant ( const  Color  & p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant . is_equal_approx ( p_constant ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Color  VisualShaderNodeColorConstant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeColorConstant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeColorConstant : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeColorConstant : : set_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeColorConstant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : COLOR ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorConstant : : VisualShaderNodeColorConstant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector2
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Constant : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Vector2Constant " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVec2Constant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec2Constant : : PortType  VisualShaderNodeVec2Constant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Constant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVec2Constant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec2Constant : : PortType  VisualShaderNodeVec2Constant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Constant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Constant : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  vformat ( " vec2(%.6f, %.6f) " ,  constant . x ,  constant . y )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVec2Constant : : set_constant ( const  Vector2  & p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant . is_equal_approx ( p_constant ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector2  VisualShaderNodeVec2Constant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVec2Constant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVec2Constant : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeVec2Constant : : set_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeVec2Constant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : VECTOR2 ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec2Constant : : VisualShaderNodeVec2Constant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Vector3
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Constant : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " Vector3Constant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVec3Constant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec3Constant : : PortType  VisualShaderNodeVec3Constant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Constant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVec3Constant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec3Constant : : PortType  VisualShaderNodeVec3Constant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Constant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Constant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  vformat ( " vec3(%.6f, %.6f, %.6f) " ,  constant . x ,  constant . y ,  constant . z )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec3Constant : : set_constant ( const  Vector3  & p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant . is_equal_approx ( p_constant ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector3  VisualShaderNodeVec3Constant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVec3Constant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVec3Constant : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeVec3Constant : : set_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeVec3Constant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : VECTOR3 ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec3Constant : : VisualShaderNodeVec3Constant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector4
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Constant : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Vector4Constant " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVec4Constant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec4Constant : : PortType  VisualShaderNodeVec4Constant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Constant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVec4Constant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec4Constant : : PortType  VisualShaderNodeVec4Constant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Constant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Constant : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  vformat ( " vec4(%.6f, %.6f, %.6f, %.6f) " ,  constant . x ,  constant . y ,  constant . z ,  constant . w )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVec4Constant : : set_constant ( const  Quaternion  & p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant . is_equal_approx ( p_constant ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Quaternion  VisualShaderNodeVec4Constant : : get_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVec4Constant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVec4Constant : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeVec4Constant : : set_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeVec4Constant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : QUATERNION ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVec4Constant : : VisualShaderNodeVec4Constant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Transform3D
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformConstant : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-03 11:11:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " TransformConstant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformConstant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformConstant : : PortType  VisualShaderNodeTransformConstant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformConstant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformConstant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformConstant : : PortType  VisualShaderNodeTransformConstant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformConstant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformConstant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Transform3D  t  =  constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									t . basis . transpose ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code  =  " 	 "  +  p_output_vars [ 0 ]  +  "  = mat4( " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  vformat ( " vec4(%.6f, %.6f, %.6f, 0.0),  " ,  t . basis [ 0 ] . x ,  t . basis [ 0 ] . y ,  t . basis [ 0 ] . z ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " vec4(%.6f, %.6f, %.6f, 0.0),  " ,  t . basis [ 1 ] . x ,  t . basis [ 1 ] . y ,  t . basis [ 1 ] . z ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " vec4(%.6f, %.6f, %.6f, 0.0),  " ,  t . basis [ 2 ] . x ,  t . basis [ 2 ] . y ,  t . basis [ 2 ] . z ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " vec4(%.6f, %.6f, %.6f, 1.0)); \n " ,  t . origin . x ,  t . origin . y ,  t . origin . z ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformConstant : : set_constant ( const  Transform3D  & p_constant )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( constant . is_equal_approx ( p_constant ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									constant  =  p_constant ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Transform3D  VisualShaderNodeTransformConstant : : get_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTransformConstant : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " constant " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformConstant : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_constant " ,  " constant " ) ,  & VisualShaderNodeTransformConstant : : set_constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_constant " ) ,  & VisualShaderNodeTransformConstant : : get_constant ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-28 03:36:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : TRANSFORM3D ,  " constant " ) ,  " set_constant " ,  " get_constant " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformConstant : : VisualShaderNodeTransformConstant ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Texture
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " Texture2D " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTexture : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:51:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture : : PortType  VisualShaderNodeTexture : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:51:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:51:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SAMPLER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:51:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " uv " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " lod " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  " sampler2D " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:51:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTexture : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture : : PortType  VisualShaderNodeTexture : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " color " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-20 18:45:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTexture : : is_output_port_expandable ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTexture : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-03 10:40:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-03 10:40:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								Vector < VisualShader : : DefaultTextureParam >  VisualShaderNodeTexture : : get_default_texture_parameters ( VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									VisualShader : : DefaultTextureParam  dtp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtp . name  =  make_unique_id ( p_type ,  p_id ,  " tex " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-12 18:23:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dtp . params . push_back ( texture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < VisualShader : : DefaultTextureParam >  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ret . push_back ( dtp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_TEXTURE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  " tex " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( texture_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  TYPE_DATA :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  TYPE_COLOR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													code  + =  "  : source_color " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  TYPE_NORMAL_MAP :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													code  + =  "  : hint_normal " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_SCREEN :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( p_mode  = =  Shader : : MODE_SPATIAL  | |  p_mode  = =  Shader : : MODE_CANVAS_ITEM )  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  " screen_tex " )  +  "  : hint_screen_texture; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_DEPTH : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_3D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_ROUGHNESS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_mode  = =  Shader : : MODE_SPATIAL  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  sampler_name  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  hint  =  "  :  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( source  = =  SOURCE_DEPTH )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													sampler_name  =  " depth_tex " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													hint  + =  " hint_depth_texture; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													sampler_name  =  source  = =  SOURCE_ROUGHNESS  ?  " roughness_tex "  :  " normal_roughness_tex " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													hint  + =  " hint_normal_roughness_texture; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  sampler_name )  +  hint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-10-03 22:14:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  default_uv ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( source  = =  SOURCE_SCREEN )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default_uv  =  " SCREEN_UV " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default_uv  =  " UV " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-03 22:14:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default_uv  =  " vec2(0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  uv  =  p_input_vars [ 0 ] . is_empty ( )  ?  default_uv  :  p_input_vars [ 0 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_PORT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_TEXTURE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( source  = =  SOURCE_PORT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												id  =  p_input_vars [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( id . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 11:29:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  {  // SOURCE_TEXTURE
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												id  =  make_unique_id ( p_type ,  p_id ,  " tex " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-10 13:11:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " ,  "  +  uv  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-10 13:11:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = textureLod( "  +  id  +  " ,  "  +  uv  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-10 13:11:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_SCREEN :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( p_mode  = =  Shader : : MODE_SPATIAL  | |  p_mode  = =  Shader : : MODE_CANVAS_ITEM )  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  id  =  make_unique_id ( p_type ,  p_id ,  " screen_tex " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " ,  "  +  uv  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = textureLod( "  +  id  +  " ,  "  +  uv  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_2D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_2D_TEXTURE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  id  =  source  = =  SOURCE_2D_TEXTURE  ?  " TEXTURE "  :  " NORMAL_TEXTURE " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " ,  "  +  uv  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = textureLod( "  +  id  +  " ,  "  +  uv  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-10 13:11:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_3D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_ROUGHNESS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_DEPTH :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! p_for_preview  & &  p_mode  = =  Shader : : MODE_SPATIAL  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  var_name  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  sampler_name  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												switch  ( source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  SOURCE_DEPTH :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														var_name  =  " _depth " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														sampler_name  =  " depth_tex " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  SOURCE_ROUGHNESS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														var_name  =  " _roughness " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														sampler_name  =  " roughness_tex " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													case  SOURCE_3D_NORMAL :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														var_name  =  " _normal " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														sampler_name  =  " normal_roughness_tex " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-05 11:48:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												String  id  =  make_unique_id ( p_type ,  p_id ,  sampler_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  type  =  source  = =  SOURCE_3D_NORMAL  ?  " vec3 "  :  " float " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  components  =  source  = =  SOURCE_3D_NORMAL  ?  " rgb "  :  " r " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													code  + =  " 		 "  +  type  +  "   "  +  var_name  +  "  = texture( "  +  id  +  " ,  "  +  uv  +  " ). "  +  components  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													code  + =  " 		 "  +  type  +  "   "  +  var_name  +  "  = textureLod( "  +  id  +  " ,  "  +  uv  +  " ,  "  +  p_input_vars [ 1 ]  +  " ). "  +  components  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( source  = =  SOURCE_3D_NORMAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = vec4( "  +  var_name  +  " , 1.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = vec4( "  +  var_name  +  " ,  "  +  var_name  +  " ,  "  +  var_name  +  " , 1.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-05 11:48:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec4(0.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture : : set_source ( Source  p_source )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_source ) ,  int ( SOURCE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  p_source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_source )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  SOURCE_TEXTURE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_SCREEN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_2D_TEXTURE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_2D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_DEPTH : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_PORT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  SOURCE_3D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_ROUGHNESS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									source  =  p_source ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture : : Source  VisualShaderNodeTexture : : get_source ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture : : set_texture ( Ref < Texture2D >  p_texture )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture  =  p_texture ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Ref < Texture2D >  VisualShaderNodeTexture : : get_texture ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  texture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture : : set_texture_type ( TextureType  p_texture_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_texture_type ) ,  int ( TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( texture_type  = =  p_texture_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_type  =  p_texture_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture : : TextureType  VisualShaderNodeTexture : : get_texture_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  texture_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTexture : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " source " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " texture_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture : : get_warning ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-11-26 14:25:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( is_input_port_connected ( 2 )  & &  source  ! =  SOURCE_PORT )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  RTR ( " The sampler port is connected but not used. Consider changing the source to 'SamplerPort'. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-26 14:25:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_TEXTURE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_PORT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  String ( ) ;  // All good.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_SCREEN :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( p_mode  = =  Shader : : MODE_SPATIAL  | |  p_mode  = =  Shader : : MODE_CANVAS_ITEM )  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  String ( ) ;  // All good.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_2D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_2D_TEXTURE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  String ( ) ;  // All good.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_3D_NORMAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_ROUGHNESS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  SOURCE_DEPTH :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_mode  = =  Shader : : MODE_SPATIAL  & &  p_type  = =  VisualShader : : TYPE_FRAGMENT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( get_output_port_for_preview ( )  = =  0 )  {  // Not supported in preview(canvas_item) shader.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  RTR ( " Invalid source for preview. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  String ( ) ;  // All good.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-05 11:48:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  RTR ( " Invalid source for shader. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_source " ,  " value " ) ,  & VisualShaderNodeTexture : : set_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_source " ) ,  & VisualShaderNodeTexture : : get_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture " ,  " value " ) ,  & VisualShaderNodeTexture : : set_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture " ) ,  & VisualShaderNodeTexture : : get_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_type " ,  " value " ) ,  & VisualShaderNodeTexture : : set_texture_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_type " ) ,  & VisualShaderNodeTexture : : get_texture_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 22:28:39 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " source " ,  PROPERTY_HINT_ENUM ,  " Texture,Screen,Texture2D,NormalMap2D,Depth,SamplerPort,Normal3D,Roughness " ) ,  " set_source " ,  " get_source " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : OBJECT ,  " texture " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " Texture2D " ) ,  " set_texture " ,  " get_texture " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " texture_type " ,  PROPERTY_HINT_ENUM ,  " Data,Color,Normal Map " ) ,  " set_texture_type " ,  " get_texture_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_TEXTURE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_SCREEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_2D_TEXTURE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_2D_NORMAL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-05 11:48:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_DEPTH ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-12 12:05:54 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_3D_NORMAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_ROUGHNESS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_DATA ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_COLOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-23 09:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_NORMAL_MAP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture : : VisualShaderNodeTexture ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// CurveTexture
  
						 
					
						
							
								
									
										
										
										
											2020-10-04 12:11:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveTexture : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " CurveTexture " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeCurveTexture : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCurveTexture : : PortType  VisualShaderNodeCurveTexture : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveTexture : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeCurveTexture : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCurveTexture : : PortType  VisualShaderNodeCurveTexture : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveTexture : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeCurveTexture : : set_texture ( Ref < CurveTexture >  p_texture )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture  =  p_texture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Ref < CurveTexture >  VisualShaderNodeCurveTexture : : get_texture ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  texture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeCurveTexture : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveTexture : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-08-06 15:14:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  " curve " )  +  "  : repeat_disable; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-04 12:11:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveTexture : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_input_vars [ 0 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = 0.0; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-04 12:11:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  id  =  make_unique_id ( p_type ,  p_id ,  " curve " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " , vec2( "  +  p_input_vars [ 0 ]  +  " )).r; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-04 12:11:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < VisualShader : : DefaultTextureParam >  VisualShaderNodeCurveTexture : : get_default_texture_parameters ( VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									VisualShader : : DefaultTextureParam  dtp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtp . name  =  make_unique_id ( p_type ,  p_id ,  " curve " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-12 18:23:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dtp . params . push_back ( texture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-04 12:11:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < VisualShader : : DefaultTextureParam >  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ret . push_back ( dtp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeCurveTexture : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture " ,  " texture " ) ,  & VisualShaderNodeCurveTexture : : set_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture " ) ,  & VisualShaderNodeCurveTexture : : get_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : OBJECT ,  " texture " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " CurveTexture " ) ,  " set_texture " ,  " get_texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeCurveTexture : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCurveTexture : : VisualShaderNodeCurveTexture ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-10-13 15:25:12 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-04 12:11:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									allow_v_resize  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// CurveXYZTexture
  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveXYZTexture : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " CurveXYZTexture " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeCurveXYZTexture : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCurveXYZTexture : : PortType  VisualShaderNodeCurveXYZTexture : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveXYZTexture : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeCurveXYZTexture : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCurveXYZTexture : : PortType  VisualShaderNodeCurveXYZTexture : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveXYZTexture : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCurveXYZTexture : : set_texture ( Ref < CurveXYZTexture >  p_texture )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									texture  =  p_texture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Ref < CurveXYZTexture >  VisualShaderNodeCurveXYZTexture : : get_texture ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  texture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeCurveXYZTexture : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveXYZTexture : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  " curve3d " )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCurveXYZTexture : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_input_vars [ 0 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec3(0.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  id  =  make_unique_id ( p_type ,  p_id ,  " curve3d " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " , vec2( "  +  p_input_vars [ 0 ]  +  " )).rgb; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < VisualShader : : DefaultTextureParam >  VisualShaderNodeCurveXYZTexture : : get_default_texture_parameters ( VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									VisualShader : : DefaultTextureParam  dtp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtp . name  =  make_unique_id ( p_type ,  p_id ,  " curve3d " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-12 18:23:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dtp . params . push_back ( texture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < VisualShader : : DefaultTextureParam >  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ret . push_back ( dtp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCurveXYZTexture : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture " ,  " texture " ) ,  & VisualShaderNodeCurveXYZTexture : : set_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture " ) ,  & VisualShaderNodeCurveXYZTexture : : get_texture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : OBJECT ,  " texture " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " CurveXYZTexture " ) ,  " set_texture " ,  " get_texture " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeCurveXYZTexture : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-14 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCurveXYZTexture : : VisualShaderNodeCurveXYZTexture ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-10-13 15:25:12 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-04 11:56:21 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									allow_v_resize  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Sample3D
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeSample3D : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSample3D : : PortType  VisualShaderNodeSample3D : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SAMPLER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSample3D : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " uvw " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " lod " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeSample3D : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSample3D : : PortType  VisualShaderNodeSample3D : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  PORT_TYPE_VECTOR_4D  :  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSample3D : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " color " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-20 18:45:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeSample3D : : is_output_port_expandable ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeSample3D : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSample3D : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										id  =  make_unique_id ( p_type ,  p_id ,  " tex3d " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  {  // SOURCE_PORT
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										id  =  p_input_vars [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( id . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec4(0.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-03 22:14:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  default_uv ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-03 22:14:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default_uv  =  " vec3(UV, 0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default_uv  =  " vec3(0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  uv  =  p_input_vars [ 0 ] . is_empty ( )  ?  default_uv  :  p_input_vars [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " ,  "  +  uv  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = textureLod( "  +  id  +  " ,  "  +  uv  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeSample3D : : set_source ( Source  p_source )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_source ) ,  int ( SOURCE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  p_source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									source  =  p_source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSample3D : : Source  VisualShaderNodeSample3D : : get_source ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeSample3D : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_source " ,  " value " ) ,  & VisualShaderNodeSample3D : : set_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_source " ) ,  & VisualShaderNodeSample3D : : get_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " source " ,  PROPERTY_HINT_ENUM ,  " Texture,SamplerPort " ) ,  " set_source " ,  " get_source " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_TEXTURE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSample3D : : get_warning ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-11-26 14:25:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( is_input_port_connected ( 2 )  & &  source  ! =  SOURCE_PORT )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  RTR ( " The sampler port is connected but not used. Consider changing the source to 'SamplerPort'. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-26 14:25:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSample3D : : VisualShaderNodeSample3D ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-07 12:29:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Texture2DArray
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DArray : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Texture2DArray " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DArray : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " sampler2DArray " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  VisualShaderNodeSample3D : : get_input_port_name ( p_port ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < VisualShader : : DefaultTextureParam >  VisualShaderNodeTexture2DArray : : get_default_texture_parameters ( VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									VisualShader : : DefaultTextureParam  dtp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtp . name  =  make_unique_id ( p_type ,  p_id ,  " tex3d " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-12 18:23:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dtp . params . push_back ( texture_array ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < VisualShader : : DefaultTextureParam >  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ret . push_back ( dtp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DArray : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " uniform sampler2DArray  "  +  make_unique_id ( p_type ,  p_id ,  " tex3d " )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture2DArray : : set_texture_array ( Ref < Texture2DArray >  p_texture_array )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_array  =  p_texture_array ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Ref < Texture2DArray >  VisualShaderNodeTexture2DArray : : get_texture_array ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  texture_array ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTexture2DArray : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " source " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " texture_array " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture2DArray : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_array " ,  " value " ) ,  & VisualShaderNodeTexture2DArray : : set_texture_array ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_array " ) ,  & VisualShaderNodeTexture2DArray : : get_texture_array ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : OBJECT ,  " texture_array " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " Texture2DArray " ) ,  " set_texture_array " ,  " get_texture_array " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture2DArray : : VisualShaderNodeTexture2DArray ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Texture3D
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture3D : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Texture3D " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture3D : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " sampler3D " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  VisualShaderNodeSample3D : : get_input_port_name ( p_port ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < VisualShader : : DefaultTextureParam >  VisualShaderNodeTexture3D : : get_default_texture_parameters ( VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									VisualShader : : DefaultTextureParam  dtp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtp . name  =  make_unique_id ( p_type ,  p_id ,  " tex3d " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-12 18:23:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dtp . params . push_back ( texture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < VisualShader : : DefaultTextureParam >  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ret . push_back ( dtp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture3D : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " uniform sampler3D  "  +  make_unique_id ( p_type ,  p_id ,  " tex3d " )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture3D : : set_texture ( Ref < Texture3D >  p_texture )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture  =  p_texture ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Ref < Texture3D >  VisualShaderNodeTexture3D : : get_texture ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  texture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTexture3D : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " source " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTexture3D : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture " ,  " value " ) ,  & VisualShaderNodeTexture3D : : set_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture " ) ,  & VisualShaderNodeTexture3D : : get_texture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : OBJECT ,  " texture " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " Texture3D " ) ,  " set_texture " ,  " get_texture " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTexture3D : : VisualShaderNodeTexture3D ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Cubemap
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemap : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Cubemap " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeCubemap : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCubemap : : PortType  VisualShaderNodeCubemap : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SAMPLER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemap : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " uv " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " lod " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " samplerCube " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeCubemap : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCubemap : : PortType  VisualShaderNodeCubemap : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemap : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " color " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-20 18:45:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeCubemap : : is_output_port_expandable ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < VisualShader : : DefaultTextureParam >  VisualShaderNodeCubemap : : get_default_texture_parameters ( VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									VisualShader : : DefaultTextureParam  dtp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtp . name  =  make_unique_id ( p_type ,  p_id ,  " cube " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-12 18:23:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dtp . params . push_back ( cube_map ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < VisualShader : : DefaultTextureParam >  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ret . push_back ( dtp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemap : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  u  =  " uniform samplerCube  "  +  make_unique_id ( p_type ,  p_id ,  " cube " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( texture_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  TYPE_DATA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  TYPE_COLOR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												u  + =  "  : source_color " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-23 09:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  TYPE_NORMAL_MAP : 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												u  + =  "  : hint_normal " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:17:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  u  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemap : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  id ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										id  =  make_unique_id ( p_type ,  p_id ,  " cube " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  {  // SOURCE_PORT
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										id  =  p_input_vars [ 2 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( id . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec4(0.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  default_uv ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default_uv  =  " vec3(UV, 0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default_uv  =  " vec3(0.0) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  uv  =  p_input_vars [ 0 ] . is_empty ( )  ?  default_uv  :  p_input_vars [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = texture( "  +  id  +  " ,  "  +  uv  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = textureLod( "  +  id  +  " ,  "  +  uv  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 11:59:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeCubemap : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 11:29:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 11:29:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCubemap : : set_source ( Source  p_source )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_source ) ,  int ( SOURCE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  p_source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									source  =  p_source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCubemap : : Source  VisualShaderNodeCubemap : : get_source ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCubemap : : set_cube_map ( Ref < Cubemap >  p_cube_map )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cube_map  =  p_cube_map ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Ref < Cubemap >  VisualShaderNodeCubemap : : get_cube_map ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  cube_map ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCubemap : : set_texture_type ( TextureType  p_texture_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_texture_type ) ,  int ( TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( texture_type  = =  p_texture_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_type  =  p_texture_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCubemap : : TextureType  VisualShaderNodeCubemap : : get_texture_type ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  texture_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeCubemap : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " source " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( source  = =  SOURCE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " cube_map " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " texture_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-26 14:25:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemap : : get_warning ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_input_port_connected ( 2 )  & &  source  ! =  SOURCE_PORT )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  RTR ( " The sampler port is connected but not used. Consider changing the source to 'SamplerPort'. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-26 14:25:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCubemap : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_source " ,  " value " ) ,  & VisualShaderNodeCubemap : : set_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_source " ) ,  & VisualShaderNodeCubemap : : get_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_cube_map " ,  " value " ) ,  & VisualShaderNodeCubemap : : set_cube_map ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_cube_map " ) ,  & VisualShaderNodeCubemap : : get_cube_map ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_type " ,  " value " ) ,  & VisualShaderNodeCubemap : : set_texture_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_type " ) ,  & VisualShaderNodeCubemap : : get_texture_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " source " ,  PROPERTY_HINT_ENUM ,  " Texture,SamplerPort " ) ,  " set_source " ,  " get_source " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : OBJECT ,  " cube_map " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " Cubemap " ) ,  " set_cube_map " ,  " get_cube_map " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " texture_type " ,  PROPERTY_HINT_ENUM ,  " Data,Color,Normal Map " ) ,  " set_texture_type " ,  " get_texture_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-17 18:31:22 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_TEXTURE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-17 18:31:22 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_DATA ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_COLOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-23 09:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_NORMAL_MAP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-11 15:43:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCubemap : : VisualShaderNodeCubemap ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-07 12:29:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Linear Depth
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeLinearSceneDepth : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " LinearSceneDepth " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeLinearSceneDepth : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeLinearSceneDepth : : PortType  VisualShaderNodeLinearSceneDepth : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeLinearSceneDepth : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeLinearSceneDepth : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeLinearSceneDepth : : PortType  VisualShaderNodeLinearSceneDepth : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeLinearSceneDepth : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " linear depth " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-03 20:14:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeLinearSceneDepth : : has_output_port_preview ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeLinearSceneDepth : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  " depth_tex " )  +  "  : hint_depth_texture; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeLinearSceneDepth : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 		float __log_depth = textureLod( "  +  make_unique_id ( p_type ,  p_id ,  " depth_tex " )  +  " , SCREEN_UV, 0.0).x; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-14 15:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! RenderingServer : : get_singleton ( ) - > is_low_end ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	vec4 __depth_view = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, __log_depth, 1.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	vec4 __depth_view = INV_PROJECTION_MATRIX * vec4(vec3(SCREEN_UV, __log_depth) * 2.0 - 1.0, 1.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 		__depth_view.xyz /= __depth_view.w; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 		%s = -__depth_view.z; \n " ,  p_output_vars [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeLinearSceneDepth : : VisualShaderNodeLinearSceneDepth ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Float Op
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatOp : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " FloatOp " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatOp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatOp : : PortType  VisualShaderNodeFloatOp : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatOp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatOp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatOp : : PortType  VisualShaderNodeFloatOp : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatOp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " op " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatOp : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code  =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_ADD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  +  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SUB : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MUL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  *  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DIV : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  /  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MOD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " mod( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_POW : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " pow( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MAX : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " max( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MIN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " min( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_ATAN2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " atan( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_STEP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " step( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatOp : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  int ( OP_ENUM_SIZE ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatOp : : Operator  VisualShaderNodeFloatOp : : get_operator ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeFloatOp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatOp : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeFloatOp : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeFloatOp : : get_operator ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " Add,Subtract,Multiply,Divide,Remainder,Power,Max,Min,ATan2,Step " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ADD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_SUB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MUL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DIV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MOD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_POW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ATAN2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_STEP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ENUM_SIZE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatOp : : VisualShaderNodeFloatOp ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Integer Op
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntOp : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " IntOp " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntOp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntOp : : PortType  VisualShaderNodeIntOp : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntOp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntOp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntOp : : PortType  VisualShaderNodeIntOp : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntOp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " op " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntOp : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code  =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_ADD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  +  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SUB : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MUL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  *  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DIV : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  /  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MOD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  %  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MAX : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " max( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MIN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " min( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 11:35:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_BITWISE_AND : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  &  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_OR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  |  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_XOR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  ^  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_LEFT_SHIFT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  <<  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_RIGHT_SHIFT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  >>  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIntOp : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  OP_ENUM_SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntOp : : Operator  VisualShaderNodeIntOp : : get_operator ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeIntOp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIntOp : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeIntOp : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeIntOp : : get_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 11:35:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " Add,Subtract,Multiply,Divide,Remainder,Max,Min,Bitwise AND,Bitwise OR,Bitwise XOR,Bitwise Left Shift,Bitwise Right Shift " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ADD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_SUB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MUL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DIV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MOD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MIN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 11:35:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_AND ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_OR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_XOR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_LEFT_SHIFT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_RIGHT_SHIFT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ENUM_SIZE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntOp : : VisualShaderNodeIntOp ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Unsigned Integer Op
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntOp : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " UIntOp " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntOp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntOp : : PortType  VisualShaderNodeUIntOp : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntOp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntOp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntOp : : PortType  VisualShaderNodeUIntOp : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntOp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " op " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntOp : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_ADD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  +  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SUB : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MUL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  *  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DIV : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  /  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MOD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  %  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MAX : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " max( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MIN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " min( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_AND : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  &  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_OR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  |  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_XOR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  ^  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_LEFT_SHIFT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  <<  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BITWISE_RIGHT_SHIFT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  >>  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntOp : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  OP_ENUM_SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntOp : : Operator  VisualShaderNodeUIntOp : : get_operator ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeUIntOp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntOp : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeUIntOp : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeUIntOp : : get_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " Add,Subtract,Multiply,Divide,Remainder,Max,Min,Bitwise AND,Bitwise OR,Bitwise XOR,Bitwise Left Shift,Bitwise Right Shift " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ADD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_SUB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MUL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DIV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MOD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_AND ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_OR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_XOR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_LEFT_SHIFT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BITWISE_RIGHT_SHIFT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ENUM_SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntOp : : VisualShaderNodeUIntOp ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								////////////// Vector Op
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorOp : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " VectorOp " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorOp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorOp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorOp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorOp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " op " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorOp : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code  =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_ADD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  +  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SUB : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MUL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  *  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DIV : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  p_input_vars [ 0 ]  +  "  /  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MOD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " mod( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_POW : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " pow( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MAX : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " max( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_MIN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " min( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_CROSS : 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( op_type  = =  OP_TYPE_VECTOR_2D )  {  // Not supported.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " vec2(0.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( op_type  = =  OP_TYPE_VECTOR_4D )  {  // Not supported.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " vec4(0.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " cross( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_ATAN2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " atan( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_REFLECT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 18:03:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " reflect( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 13:00:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_STEP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " step( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorOp : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorOp : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  int ( OP_ENUM_SIZE ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorOp : : Operator  VisualShaderNodeVectorOp : : get_operator ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVectorOp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeVectorBase : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorOp : : get_warning ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  invalid_type  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  OP_TYPE_VECTOR_2D  | |  op_type  = =  OP_TYPE_VECTOR_4D )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 18:03:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( op  = =  OP_CROSS )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											invalid_type  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( invalid_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  RTR ( " Invalid operator for that type. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorOp : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeVectorOp : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeVectorOp : : get_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " Add,Subtract,Multiply,Divide,Remainder,Power,Max,Min,Cross,ATan2,Reflect,Step " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ADD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_SUB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MUL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DIV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MOD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_POW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_CROSS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ATAN2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_REFLECT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_STEP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ENUM_SIZE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorOp : : VisualShaderNodeVectorOp ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Color Op
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorOp : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " ColorOp " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeColorOp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorOp : : PortType  VisualShaderNodeColorOp : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorOp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeColorOp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorOp : : PortType  VisualShaderNodeColorOp : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorOp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " op " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorOp : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  const  char  * axisn [ 3 ]  =  {  " x " ,  " y " ,  " z "  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SCREEN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec3(1.0) - (vec3(1.0) -  "  +  p_input_vars [ 0 ]  +  " ) * (vec3(1.0) -  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DIFFERENCE :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = abs( "  +  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DARKEN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = min( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_LIGHTEN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = max( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_OVERLAY :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( int  i  =  0 ;  i  <  3 ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		float base =  "  +  p_input_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		float blend =  "  +  p_input_vars [ 1 ]  +  " . "  +  axisn [ i ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		if (base < 0.5) { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 			 "  +  p_output_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  "  = 2.0 * base * blend; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		} else { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 			 "  +  p_output_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  "  = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DODGE :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = ( "  +  p_input_vars [ 0 ]  +  " ) / (vec3(1.0) -  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BURN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec3(1.0) - (vec3(1.0) -  "  +  p_input_vars [ 0 ]  +  " ) / ( "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SOFT_LIGHT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( int  i  =  0 ;  i  <  3 ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		float base =  "  +  p_input_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		float blend =  "  +  p_input_vars [ 1 ]  +  " . "  +  axisn [ i ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		if (base < 0.5) { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 			 "  +  p_output_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  "  = (base * (blend + 0.5)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		} else { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 			 "  +  p_output_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  "  = (1.0 - (1.0 - base) * (1.0 - (blend - 0.5))); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_HARD_LIGHT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( int  i  =  0 ;  i  <  3 ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		float base =  "  +  p_input_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		float blend =  "  +  p_input_vars [ 1 ]  +  " . "  +  axisn [ i ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		if (base < 0.5) { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 			 "  +  p_output_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  "  = (base * (2.0 * blend)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		} else { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 			 "  +  p_output_vars [ 0 ]  +  " . "  +  axisn [ i ]  +  "  = (1.0 - (1.0 - base) * (1.0 - 2.0 * (blend - 0.5))); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeColorOp : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  int ( OP_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_SCREEN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DIFFERENCE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DARKEN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_LIGHTEN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_OVERLAY : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_DODGE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BURN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_SOFT_LIGHT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_HARD_LIGHT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorOp : : Operator  VisualShaderNodeColorOp : : get_operator ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeColorOp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeColorOp : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeColorOp : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeColorOp : : get_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " Screen,Difference,Darken,Lighten,Overlay,Dodge,Burn,Soft Light,Hard Light " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-17 18:31:22 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_SCREEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DIFFERENCE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DARKEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_LIGHTEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_OVERLAY ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_DODGE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BURN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_SOFT_LIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_HARD_LIGHT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorOp : : VisualShaderNodeColorOp ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Transform Op
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformOp : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " TransformOp " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformOp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformOp : : PortType  VisualShaderNodeTransformOp : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformOp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformOp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformOp : : PortType  VisualShaderNodeTransformOp : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformOp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " mult " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformOp : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_AxB : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  "  *  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BxA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 1 ]  +  "  *  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_AxB_COMP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  = matrixCompMult( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_BxA_COMP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  = matrixCompMult( "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 0 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_ADD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  "  +  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_A_MINUS_B : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_B_MINUS_A : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 1 ]  +  "  -  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_A_DIV_B : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  "  /  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_B_DIV_A : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 1 ]  +  "  /  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformOp : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  int ( OP_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformOp : : Operator  VisualShaderNodeTransformOp : : get_operator ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTransformOp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformOp : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeTransformOp : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeTransformOp : : get_operator ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " A x B,B x A,A x B(per component),B x A(per component),A + B,A - B,B - A,A / B,B / A " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-17 18:31:22 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_AxB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BxA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_AxB_COMP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BxA_COMP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_ADD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_A_MINUS_B ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_B_MINUS_A ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_A_DIV_B ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_B_DIV_A ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-11 19:08:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformOp : : VisualShaderNodeTransformOp ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// TransformVec Mult
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformVecMult : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " TransformVectorMult " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformVecMult : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformVecMult : : PortType  VisualShaderNodeTransformVecMult : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  PORT_TYPE_TRANSFORM  :  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformVecMult : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformVecMult : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformVecMult : : PortType  VisualShaderNodeTransformVecMult : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformVecMult : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformVecMult : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  OP_AxB )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = ( "  +  p_input_vars [ 0 ]  +  "  * vec4( "  +  p_input_vars [ 1 ]  +  " , 1.0)).xyz; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									}  else  if  ( op  = =  OP_BxA )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = (vec4( "  +  p_input_vars [ 1 ]  +  " , 1.0) *  "  +  p_input_vars [ 0 ]  +  " ).xyz; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									}  else  if  ( op  = =  OP_3x3_AxB )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = ( "  +  p_input_vars [ 0 ]  +  "  * vec4( "  +  p_input_vars [ 1 ]  +  " , 0.0)).xyz; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = (vec4( "  +  p_input_vars [ 1 ]  +  " , 0.0) *  "  +  p_input_vars [ 0 ]  +  " ).xyz; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformVecMult : : set_operator ( Operator  p_op )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op ) ,  int ( OP_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op  = =  p_op )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									op  =  p_op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformVecMult : : Operator  VisualShaderNodeTransformVecMult : : get_operator ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTransformVecMult : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformVecMult : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_operator " ,  " op " ) ,  & VisualShaderNodeTransformVecMult : : set_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_operator " ) ,  & VisualShaderNodeTransformVecMult : : get_operator ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " operator " ,  PROPERTY_HINT_ENUM ,  " A x B,B x A,A x B (3x3),B x A (3x3) " ) ,  " set_operator " ,  " get_operator " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_AxB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_BxA ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_3x3_AxB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_3x3_BxA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformVecMult : : VisualShaderNodeTransformVecMult ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " FloatFunc " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatFunc : : PortType  VisualShaderNodeFloatFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatFunc : : PortType  VisualShaderNodeFloatFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatFunc : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										" sin($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" cos($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" tan($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" asin($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" acos($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" atan($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sinh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" cosh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" tanh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" log($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" exp($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sqrt($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" abs($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sign($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" floor($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" round($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" ceil($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" fract($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" min(max($, 0.0), 1.0) " , 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										" -($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" acosh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" asinh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" atanh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" degrees($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" exp2($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" inversesqrt($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" log2($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" radians($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" 1.0 / ($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" roundEven($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" trunc($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" 1.0 - $ " 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatFunc : : Function  VisualShaderNodeFloatFunc : : get_function ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeFloatFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeFloatFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeFloatFunc : : get_function ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-05 18:15:10 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Sin,Cos,Tan,ASin,ACos,ATan,SinH,CosH,TanH,Log,Exp,Sqrt,Abs,Sign,Floor,Round,Ceil,Fract,Saturate,Negate,ACosH,ASinH,ATanH,Degrees,Exp2,InverseSqrt,Log2,Radians,Reciprocal,RoundEven,Trunc,OneMinus " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_COS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ASIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ACOS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ATAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SINH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_COSH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TANH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_LOG ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_EXP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SQRT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ABS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SIGN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_FLOOR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ROUND ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_CEIL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-05 18:15:10 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_FRACT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SATURATE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_NEGATE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ACOSH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ASINH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ATANH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_DEGREES ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_EXP2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_INVERSE_SQRT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_LOG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_RADIANS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_RECIPROCAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ROUNDEVEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TRUNC ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ONEMINUS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatFunc : : VisualShaderNodeFloatFunc ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Int Func
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " IntFunc " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntFunc : : PortType  VisualShaderNodeIntFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIntFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntFunc : : PortType  VisualShaderNodeIntFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIntFunc : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" abs($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" -($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 11:35:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" sign($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" ~($) " 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIntFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntFunc : : Function  VisualShaderNodeIntFunc : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeIntFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIntFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeIntFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeIntFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 11:35:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Abs,Negate,Sign,Bitwise NOT " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ABS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_NEGATE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SIGN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-03 11:35:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_BITWISE_NOT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIntFunc : : VisualShaderNodeIntFunc ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Unsigned Int Func
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " UIntFunc " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntFunc : : PortType  VisualShaderNodeUIntFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntFunc : : PortType  VisualShaderNodeUIntFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntFunc : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" -($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" ~($) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntFunc : : Function  VisualShaderNodeUIntFunc : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeUIntFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeUIntFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeUIntFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Negate,Bitwise NOT " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_NEGATE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_BITWISE_NOT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntFunc : : VisualShaderNodeUIntFunc ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								////////////// Vector Func
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorFunc : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " VectorFunc " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " result " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorFunc : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * funcs [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										" normalize($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" " ,  // FUNC_SATURATE
 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										" -($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" 1.0 / ($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" abs($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" acos($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" acosh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" asin($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" asinh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" atan($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" atanh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" ceil($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" cos($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" cosh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" degrees($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" exp($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" exp2($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" floor($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" fract($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" inversesqrt($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" log($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" log2($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" radians($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" round($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" roundEven($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sign($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sin($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sinh($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" sqrt($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" tan($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" tanh($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" trunc($) " , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" "  // FUNC_ONEMINUS
 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( func  = =  FUNC_SATURATE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( op_type  = =  OP_TYPE_VECTOR_2D )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  =  " max(min($, vec2(1.0)), vec2(0.0)) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( op_type  = =  OP_TYPE_VECTOR_3D )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  =  " max(min($, vec3(1.0)), vec3(0.0)) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  =  " max(min($, vec4(1.0)), vec4(0.0)) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  code . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  FUNC_ONEMINUS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( op_type  = =  OP_TYPE_VECTOR_2D )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  =  " vec2(1.0) - $ " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( op_type  = =  OP_TYPE_VECTOR_3D )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  =  " vec3(1.0) - $ " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  =  " vec4(1.0) - $ " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  code . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-07 09:49:12 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( funcs [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorFunc : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorFunc : : Function  VisualShaderNodeVectorFunc : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVectorFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeVectorBase : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeVectorFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeVectorFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-05 18:15:10 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Normalize,Saturate,Negate,Reciprocal,Abs,ACos,ACosH,ASin,ASinH,ATan,ATanH,Ceil,Cos,CosH,Degrees,Exp,Exp2,Floor,Fract,InverseSqrt,Log,Log2,Radians,Round,RoundEven,Sign,Sin,SinH,Sqrt,Tan,TanH,Trunc,OneMinus " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_NORMALIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SATURATE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_NEGATE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_RECIPROCAL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ABS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ACOS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ACOSH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ASIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ASINH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ATAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ATANH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_CEIL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_COS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_COSH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_DEGREES ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_EXP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_EXP2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_FLOOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-05 18:15:10 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_FRACT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_INVERSE_SQRT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_LOG ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_LOG2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_RADIANS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ROUND ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ROUNDEVEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SIGN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SIN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SINH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SQRT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TANH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TRUNC ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_ONEMINUS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorFunc : : VisualShaderNodeVectorFunc ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// ColorFunc
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " ColorFunc " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeColorFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorFunc : : PortType  VisualShaderNodeColorFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeColorFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorFunc : : PortType  VisualShaderNodeColorFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeColorFunc : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  FUNC_GRAYSCALE : 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec3 c =  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float max1 = max(c.r, c.g); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float max2 = max(max1, c.b); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-20 18:36:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = vec3(max2, max2, max2); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-07 09:49:12 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FUNC_HSV2RGB : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec3 c =  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  FUNC_RGB2HSV : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec3 c =  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float d = q.x - min(q.w, q.y); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float e = 1.0e-10; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FUNC_SEPIA : 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		vec3 c =  "  +  p_input_vars [ 0 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float r = (c.r * .393) + (c.g *.769) + (c.b * .189); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float g = (c.r * .349) + (c.g *.686) + (c.b * .168); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		float b = (c.r * .272) + (c.g *.534) + (c.b * .131); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = vec3(r, g, b); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeColorFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorFunc : : Function  VisualShaderNodeColorFunc : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeColorFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeColorFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeColorFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeColorFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-07 09:49:12 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Grayscale,HSV2RGB,RGB2HSV,Sepia " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_GRAYSCALE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-07 09:49:12 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_HSV2RGB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_RGB2HSV ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SEPIA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeColorFunc : : VisualShaderNodeColorFunc ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-07 12:29:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Transform Func
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " TransformFunc " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformFunc : : PortType  VisualShaderNodeTransformFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformFunc : : PortType  VisualShaderNodeTransformFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformFunc : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" inverse($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" transpose($) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformFunc : : Function  VisualShaderNodeTransformFunc : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTransformFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeTransformFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeTransformFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Inverse,Transpose " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_INVERSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_TRANSPOSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTransformFunc : : VisualShaderNodeTransformFunc ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// UV Func
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " UVFunc " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUVFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVFunc : : PortType  VisualShaderNodeUVFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ;  // uv
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ;  // scale
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ;  // offset & pivot
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " uv " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " scale " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  FUNC_PANNING : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " offset " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  FUNC_SCALING : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " pivot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeUVFunc : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUVFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVFunc : : PortType  VisualShaderNodeUVFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " uv " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUVFunc : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVFunc : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  uv ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_input_vars [ 0 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											uv  =  " UV " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											uv  =  " vec2(0.0) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uv  =  vformat ( " %s " ,  p_input_vars [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  scale  =  vformat ( " %s " ,  p_input_vars [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  offset_pivot  =  vformat ( " %s " ,  p_input_vars [ 2 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  FUNC_PANNING :  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-08 12:37:20 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  vformat ( " 	%s = %s * %s + %s; \n " ,  p_output_vars [ 0 ] ,  offset_pivot ,  scale ,  uv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  FUNC_SCALING :  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-08 12:37:20 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  vformat ( " 	%s = (%s - %s) * %s + %s; \n " ,  p_output_vars [ 0 ] ,  uv ,  offset_pivot ,  scale ,  offset_pivot ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUVFunc : : set_function ( VisualShaderNodeUVFunc : : Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_func  = =  FUNC_PANNING )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-10 04:31:05 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // offset
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  {  // FUNC_SCALING
 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-10 04:31:05 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										set_input_port_default_value ( 2 ,  Vector2 ( 0.5 ,  0.5 ) ,  get_input_port_default_value ( 2 ) ) ;  // pivot
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVFunc : : Function  VisualShaderNodeUVFunc : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeUVFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUVFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeUVFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeUVFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Panning,Scaling " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_PANNING ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SCALING ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVFunc : : VisualShaderNodeUVFunc ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector2 ( 1.0 ,  1.0 ) ) ;  // scale
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  Vector2 ( ) ) ;  // offset
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-05 15:53:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// UV PolarCoord
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVPolarCoord : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " UVPolarCoord " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUVPolarCoord : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVPolarCoord : : PortType  VisualShaderNodeUVPolarCoord : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ;  // uv
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ;  // center
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ;  // zoom
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ;  // repeat
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVPolarCoord : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " uv " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " scale " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " zoom strength " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " repeat " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUVPolarCoord : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUVPolarCoord : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVPolarCoord : : PortType  VisualShaderNodeUVPolarCoord : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVPolarCoord : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " uv " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUVPolarCoord : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  uv ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_input_vars [ 0 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											uv  =  " UV " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											uv  =  " vec2(0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uv  =  vformat ( " %s " ,  p_input_vars [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  center  =  vformat ( " %s " ,  p_input_vars [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  zoom  =  vformat ( " %s " ,  p_input_vars [ 2 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  repeat  =  vformat ( " %s " ,  p_input_vars [ 3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  vformat ( " 		vec2 __dir = %s - %s; \n " ,  uv ,  center ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		float __radius = length(__dir) * 2.0; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		float __angle = atan(__dir.y, __dir.x) * 1.0 / (PI * 2.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  vformat ( " 		%s = mod(vec2(__radius * %s, __angle * %s), 1.0); \n " ,  p_output_vars [ 0 ] ,  zoom ,  repeat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  vformat ( " 		vec2 __dir = %s - %s; \n " ,  uv ,  center ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		float __radius = length(__dir) * 2.0; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		float __angle = atan(__dir.y, __dir.x) * 1.0 / (PI * 2.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  vformat ( " 		%s = vec2(__radius * %s, __angle * %s); \n " ,  p_output_vars [ 0 ] ,  zoom ,  repeat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUVPolarCoord : : VisualShaderNodeUVPolarCoord ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector2 ( 0.5 ,  0.5 ) ) ;  // center
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  1.0 ) ;  // zoom
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 3 ,  1.0 ) ;  // repeat
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								////////////// Dot Product
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDotProduct : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " DotProduct " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeDotProduct : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDotProduct : : PortType  VisualShaderNodeDotProduct : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDotProduct : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  " a "  :  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeDotProduct : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDotProduct : : PortType  VisualShaderNodeDotProduct : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDotProduct : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " dot " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDotProduct : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = dot( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDotProduct : : VisualShaderNodeDotProduct ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Vector Len
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorLen : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " VectorLen " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorLen : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorLen : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorLen : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorLen : : PortType  VisualShaderNodeVectorLen : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorLen : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " length " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorLen : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorLen : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = length( "  +  p_input_vars [ 0 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorLen : : VisualShaderNodeVectorLen ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Determinant
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDeterminant : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Determinant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeDeterminant : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDeterminant : : PortType  VisualShaderNodeDeterminant : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDeterminant : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeDeterminant : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDeterminant : : PortType  VisualShaderNodeDeterminant : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDeterminant : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDeterminant : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = determinant( "  +  p_input_vars [ 0 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDeterminant : : VisualShaderNodeDeterminant ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Derivative Function
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDerivativeFunc : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " DerivativeFunc " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeDerivativeFunc : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDerivativeFunc : : PortType  VisualShaderNodeDerivativeFunc : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDerivativeFunc : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " p " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeDerivativeFunc : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDerivativeFunc : : PortType  VisualShaderNodeDerivativeFunc : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDerivativeFunc : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " result " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDerivativeFunc : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" fwidth$($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" dFdx$($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" dFdy$($) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  const  char  * precisions [ PRECISION_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" Coarse " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" Fine " 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( OS : : get_singleton ( ) - > get_current_rendering_method ( )  = =  " gl_compatibility " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace_first ( " $ " ,  " " ) . replace_first ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace_first ( " $ " ,  String ( precisions [ precision ] ) ) . replace_first ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDerivativeFunc : : get_warning ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( precision  ! =  PRECISION_NONE  & &  OS : : get_singleton ( ) - > get_current_rendering_method ( )  = =  " gl_compatibility " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  precision_str ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( precision )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  PRECISION_COARSE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												precision_str  =  " Coarse " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  PRECISION_FINE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												precision_str  =  " Fine " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  vformat ( RTR ( " `%s` precision mode is not available for `gl_compatibility` profile. \n Reverted to `None` precision. " ) ,  precision_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeDerivativeFunc : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( ( int ) p_op_type ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDerivativeFunc : : OpType  VisualShaderNodeDerivativeFunc : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeDerivativeFunc : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDerivativeFunc : : Function  VisualShaderNodeDerivativeFunc : : get_function ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeDerivativeFunc : : set_precision ( Precision  p_precision )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_precision ) ,  int ( PRECISION_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( precision  = =  p_precision )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									precision  =  p_precision ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDerivativeFunc : : Precision  VisualShaderNodeDerivativeFunc : : get_precision ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  precision ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeDerivativeFunc : : get_editable_properties ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " precision " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeDerivativeFunc : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " type " ) ,  & VisualShaderNodeDerivativeFunc : : set_op_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeDerivativeFunc : : get_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeDerivativeFunc : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeDerivativeFunc : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_precision " ,  " precision " ) ,  & VisualShaderNodeDerivativeFunc : : set_precision ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_precision " ) ,  & VisualShaderNodeDerivativeFunc : : get_precision ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Scalar,Vector2,Vector3,Vector4 " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Sum,X,Y " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " precision " ,  PROPERTY_HINT_ENUM ,  " None,Coarse,Fine " ) ,  " set_precision " ,  " get_precision " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_SUM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_X ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_Y ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-26 14:31:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( PRECISION_NONE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( PRECISION_COARSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( PRECISION_FINE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( PRECISION_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-28 21:36:10 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeDerivativeFunc : : VisualShaderNodeDerivativeFunc ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Clamp
  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeClamp : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Clamp " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeClamp : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeClamp : : PortType  VisualShaderNodeClamp : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_INT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_UINT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeClamp : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " min " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " max " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeClamp : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeClamp : : PortType  VisualShaderNodeClamp : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_INT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_UINT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeClamp : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeClamp : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = clamp( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeClamp : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( ( int ) p_op_type ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_FLOAT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_UINT : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_INT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0 ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Quaternion ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeClamp : : OpType  VisualShaderNodeClamp : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeClamp : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeClamp : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " op_type " ) ,  & VisualShaderNodeClamp : : set_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeClamp : : get_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Float,Int,UInt,Vector2,Vector3,Vector4 " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_FLOAT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_INT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_UINT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeClamp : : VisualShaderNodeClamp ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  1.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// FaceForward
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeFaceForward : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " FaceForward " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeFaceForward : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeFaceForward : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " N " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " I " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " Nref " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeFaceForward : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeFaceForward : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFaceForward : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Quaternion ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFaceForward : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = faceforward( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeFaceForward : : VisualShaderNodeFaceForward ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Outer Product
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeOuterProduct : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " OuterProduct " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeOuterProduct : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeOuterProduct : : PortType  VisualShaderNodeOuterProduct : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeOuterProduct : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " c " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " r " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeOuterProduct : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeOuterProduct : : PortType  VisualShaderNodeOuterProduct : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeOuterProduct : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeOuterProduct : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = outerProduct(vec4( "  +  p_input_vars [ 0 ]  +  " , 0.0), vec4( "  +  p_input_vars [ 1 ]  +  " , 0.0)); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeOuterProduct : : VisualShaderNodeOuterProduct ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Step
  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeStep : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Step " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeStep : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeStep : : PortType  VisualShaderNodeStep : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-01 08:03:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeStep : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " edge " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " x " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-22 10:33:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeStep : : get_default_input_port ( PortType  p_type )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeStep : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeStep : : PortType  VisualShaderNodeStep : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeStep : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeStep : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeStep : : OpType  VisualShaderNodeStep : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeStep : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = step( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeStep : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeStep : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " op_type " ) ,  & VisualShaderNodeStep : : set_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeStep : : get_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar,Vector4,Vector4Scalar " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D_SCALAR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeStep : : VisualShaderNodeStep ( )  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// SmoothStep
  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeSmoothStep : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " SmoothStep " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeSmoothStep : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeSmoothStep : : PortType  VisualShaderNodeSmoothStep : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_2D ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-01 08:03:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_3D ;  // x
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_4D ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeSmoothStep : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " edge0 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " edge1 " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " x " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-22 10:33:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeSmoothStep : : get_default_input_port ( PortType  p_type )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeSmoothStep : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeSmoothStep : : PortType  VisualShaderNodeSmoothStep : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeSmoothStep : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeSmoothStep : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Quaternion ( ) ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Quaternion ( ) ,  get_input_port_default_value ( 2 ) ) ;  // x
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeSmoothStep : : OpType  VisualShaderNodeSmoothStep : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeSmoothStep : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = smoothstep( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeSmoothStep : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeSmoothStep : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " op_type " ) ,  & VisualShaderNodeSmoothStep : : set_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeSmoothStep : : get_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar,Vector4,Vector4Scalar " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D_SCALAR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeSmoothStep : : VisualShaderNodeSmoothStep ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ;  // edge0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  1.0 ) ;  // edge1
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  0.5 ) ;  // x
 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Distance
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDistance : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Distance " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorDistance : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDistance : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " a " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " b " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorDistance : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorDistance : : PortType  VisualShaderNodeVectorDistance : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDistance : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorDistance : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDistance : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = distance( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeVectorDistance : : VisualShaderNodeVectorDistance ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ;  // b
 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Refract Vector
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorRefract : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Refract " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorRefract : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorRefract : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " I " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " N " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " eta " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorRefract : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorRefract : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorRefract : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = refract( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-07 18:03:16 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorRefract : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVectorRefract : : VisualShaderNodeVectorRefract ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Mix
  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeMix : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Mix " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeMix : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeMix : : PortType  VisualShaderNodeMix : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-01 08:03:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeMix : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " a " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " weight " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeMix : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeMix : : PortType  VisualShaderNodeMix : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeMix : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " mix " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeMix : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( ) ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Quaternion ( ) ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ;  // weight
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeMix : : OpType  VisualShaderNodeMix : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeMix : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = mix( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeMix : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeMix : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " op_type " ) ,  & VisualShaderNodeMix : : set_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeMix : : get_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Scalar,Vector2,Vector2Scalar,Vector3,Vector3Scalar,Vector4,Vector4Scalar " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D_SCALAR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-03 18:12:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeMix : : VisualShaderNodeMix ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ;  // a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  1.0 ) ;  // b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  0.5 ) ;  // weight
 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Vector Compose
  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorCompose : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " VectorCompose " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorCompose : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVectorCompose : : PortType  VisualShaderNodeVectorCompose : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorCompose : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " z " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " z " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " w " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorCompose : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorCompose : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " vec " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorCompose : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  p1  =  get_input_port_default_value ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  p2  =  get_input_port_default_value ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  p1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  p2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  p1  =  get_input_port_default_value ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  p2  =  get_input_port_default_value ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  p1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  p2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  p1  =  get_input_port_default_value ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  p2  =  get_input_port_default_value ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  p1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  p2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 3 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorCompose : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec2( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec3( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = vec4( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ,  "  +  p_input_vars [ 3 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVectorCompose : : VisualShaderNodeVectorCompose ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Transform Compose
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformCompose : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " TransformCompose " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformCompose : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformCompose : : PortType  VisualShaderNodeTransformCompose : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformCompose : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " z " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " origin " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformCompose : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformCompose : : PortType  VisualShaderNodeTransformCompose : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformCompose : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " xform " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformCompose : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = mat4(vec4( "  +  p_input_vars [ 0 ]  +  " , 0.0), vec4( "  +  p_input_vars [ 1 ]  +  " , 0.0), vec4( "  +  p_input_vars [ 2 ]  +  " , 0.0), vec4( "  +  p_input_vars [ 3 ]  +  " , 1.0)); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformCompose : : VisualShaderNodeTransformCompose ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 3 ,  Vector3 ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector Decompose
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDecompose : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " VectorDecompose " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorDecompose : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDecompose : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " vec " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVectorDecompose : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVectorDecompose : : PortType  VisualShaderNodeVectorDecompose : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDecompose : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " z " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " z " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  " w " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeVectorDecompose : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVectorDecompose : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .x; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 1 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .y; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .x; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 1 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .y; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 2 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .z; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .x; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 1 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .y; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 2 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .z; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 3 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " .w; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVectorDecompose : : VisualShaderNodeVectorDecompose ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Transform Decompose
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformDecompose : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " TransformDecompose " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformDecompose : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformDecompose : : PortType  VisualShaderNodeTransformDecompose : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformDecompose : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " xform " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformDecompose : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformDecompose : : PortType  VisualShaderNodeTransformDecompose : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformDecompose : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " x " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " y " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " z " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " origin " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-21 16:07:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformDecompose : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " [0].xyz; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 1 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " [1].xyz; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 2 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " [2].xyz; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 3 ]  +  "  =  "  +  p_input_vars [ 0 ]  +  " [3].xyz; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 17:28:06 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformDecompose : : VisualShaderNodeTransformDecompose ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Float Parameter
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " FloatParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatParameter : : PortType  VisualShaderNodeFloatParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeFloatParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatParameter : : PortType  VisualShaderNodeFloatParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code  =  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( hint  = =  HINT_RANGE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  _get_qual_str ( )  +  " uniform float  "  +  get_parameter_name ( )  +  "  : hint_range( "  +  rtos ( hint_range_min )  +  " ,  "  +  rtos ( hint_range_max )  +  " ) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( hint  = =  HINT_RANGE_STEP )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  _get_qual_str ( )  +  " uniform float  "  +  get_parameter_name ( )  +  "  : hint_range( "  +  rtos ( hint_range_min )  +  " ,  "  +  rtos ( hint_range_max )  +  " ,  "  +  rtos ( hint_range_step )  +  " ) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  _get_qual_str ( )  +  " uniform float  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  "  =  "  +  rtos ( default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFloatParameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFloatParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFloatParameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : set_hint ( Hint  p_hint )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_hint ) ,  int ( HINT_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hint  = =  p_hint )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint  =  p_hint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatParameter : : Hint  VisualShaderNodeFloatParameter : : get_hint ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : set_min ( float  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Math : : is_equal_approx ( hint_range_min ,  p_value ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint_range_min  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								float  VisualShaderNodeFloatParameter : : get_min ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint_range_min ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : set_max ( float  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Math : : is_equal_approx ( hint_range_max ,  p_value ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint_range_max  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								float  VisualShaderNodeFloatParameter : : get_max ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint_range_max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : set_step ( float  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Math : : is_equal_approx ( hint_range_step ,  p_value ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint_range_step  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								float  VisualShaderNodeFloatParameter : : get_step ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint_range_step ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : set_default_value_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled  = =  p_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value_enabled  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFloatParameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : set_default_value ( float  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Math : : is_equal_approx ( default_value ,  p_value ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								float  VisualShaderNodeFloatParameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeFloatParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_hint " ,  " hint " ) ,  & VisualShaderNodeFloatParameter : : set_hint ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_hint " ) ,  & VisualShaderNodeFloatParameter : : get_hint ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_min " ,  " value " ) ,  & VisualShaderNodeFloatParameter : : set_min ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_min " ) ,  & VisualShaderNodeFloatParameter : : get_min ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_max " ,  " value " ) ,  & VisualShaderNodeFloatParameter : : set_max ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_max " ) ,  & VisualShaderNodeFloatParameter : : get_max ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_step " ,  " value " ) ,  & VisualShaderNodeFloatParameter : : set_step ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_step " ) ,  & VisualShaderNodeFloatParameter : : get_step ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeFloatParameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeFloatParameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeFloatParameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeFloatParameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " hint " ,  PROPERTY_HINT_ENUM ,  " None,Range,Range+Step " ) ,  " set_hint " ,  " get_hint " ) ; 
							 
						 
					
						
							
								
									
										
										
											
												Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.
- Renames PackedIntArray to PackedInt32Array.
- Renames PackedFloatArray to PackedFloat32Array.
- Adds PackedInt64Array and PackedFloat64Array.
- Renames Variant::REAL to Variant::FLOAT for consistency.
Packed arrays are for storing large amount of data and creating stuff like
meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of
memory. That said, many users requested the ability to have 64 bits packed
arrays for their games, so this is just an optional added type.
For Variant, the float datatype is always 64 bits, and exposed as `float`.
We still have `real_t` which is the datatype that can change from 32 to 64
bits depending on a compile flag (not entirely working right now, but that's
the idea). It affects math related datatypes and code only.
Neither Variant nor PackedArray make use of real_t, which is only intended
for math precision, so the term is removed from there to keep only float.
											 
										 
										
											2020-02-24 15:20:53 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : FLOAT ,  " min " ) ,  " set_min " ,  " get_min " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : FLOAT ,  " max " ) ,  " set_max " ,  " get_max " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : FLOAT ,  " step " ) ,  " set_step " ,  " get_step " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : FLOAT ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_NONE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_RANGE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_RANGE_STEP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFloatParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // all qualifiers are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFloatParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeFloatParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " hint " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hint  = =  HINT_RANGE  | |  hint  = =  HINT_RANGE_STEP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " min " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " max " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hint  = =  HINT_RANGE_STEP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " step " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-06 15:11:03 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeFloatParameter : : VisualShaderNodeFloatParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Integer Parameter
  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeIntParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " IntParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeIntParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeIntParameter : : PortType  VisualShaderNodeIntParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeIntParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeIntParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeIntParameter : : PortType  VisualShaderNodeIntParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeIntParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeIntParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code  =  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( hint  = =  HINT_RANGE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  _get_qual_str ( )  +  " uniform int  "  +  get_parameter_name ( )  +  "  : hint_range( "  +  itos ( hint_range_min )  +  " ,  "  +  itos ( hint_range_max )  +  " ) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( hint  = =  HINT_RANGE_STEP )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  _get_qual_str ( )  +  " uniform int  "  +  get_parameter_name ( )  +  "  : hint_range( "  +  itos ( hint_range_min )  +  " ,  "  +  itos ( hint_range_max )  +  " ,  "  +  itos ( hint_range_step )  +  " ) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  _get_qual_str ( )  +  " uniform int  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  "  =  "  +  itos ( default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeIntParameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeIntParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeIntParameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : set_hint ( Hint  p_hint )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_hint ) ,  int ( HINT_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hint  = =  p_hint )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint  =  p_hint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeIntParameter : : Hint  VisualShaderNodeIntParameter : : get_hint ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : set_min ( int  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( hint_range_min  = =  p_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint_range_min  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeIntParameter : : get_min ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint_range_min ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : set_max ( int  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( hint_range_max  = =  p_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint_range_max  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeIntParameter : : get_max ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint_range_max ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : set_step ( int  p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( hint_range_step  = =  p_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hint_range_step  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeIntParameter : : get_step ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  hint_range_step ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : set_default_value_enabled ( bool  p_default_value_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled  = =  p_default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default_value_enabled  =  p_default_value_enabled ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeIntParameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : set_default_value ( int  p_default_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value  = =  p_default_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default_value  =  p_default_value ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeIntParameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeIntParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_hint " ,  " hint " ) ,  & VisualShaderNodeIntParameter : : set_hint ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_hint " ) ,  & VisualShaderNodeIntParameter : : get_hint ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_min " ,  " value " ) ,  & VisualShaderNodeIntParameter : : set_min ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_min " ) ,  & VisualShaderNodeIntParameter : : get_min ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_max " ,  " value " ) ,  & VisualShaderNodeIntParameter : : set_max ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_max " ) ,  & VisualShaderNodeIntParameter : : get_max ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_step " ,  " value " ) ,  & VisualShaderNodeIntParameter : : set_step ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_step " ) ,  & VisualShaderNodeIntParameter : : get_step ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeIntParameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeIntParameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeIntParameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeIntParameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " hint " ,  PROPERTY_HINT_ENUM ,  " None,Range,Range + Step " ) ,  " set_hint " ,  " get_hint " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " min " ) ,  " set_min " ,  " get_min " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " max " ) ,  " set_max " ,  " get_max " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " step " ) ,  " set_step " ,  " get_step " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_NONE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_RANGE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_RANGE_STEP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( HINT_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeIntParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // all qualifiers are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeIntParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeIntParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " hint " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hint  = =  HINT_RANGE  | |  hint  = =  HINT_RANGE_STEP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " min " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " max " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( hint  = =  HINT_RANGE_STEP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " step " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeIntParameter : : VisualShaderNodeIntParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Unsigned Integer Parameter
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " UIntParameter " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntParameter : : PortType  VisualShaderNodeUIntParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntParameter : : PortType  VisualShaderNodeUIntParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform uint  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  "  =  "  +  itos ( default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeUIntParameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUIntParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUIntParameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntParameter : : set_default_value_enabled ( bool  p_default_value_enabled )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled  = =  p_default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default_value_enabled  =  p_default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUIntParameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntParameter : : set_default_value ( int  p_default_value )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value  = =  p_default_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default_value  =  p_default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeUIntParameter : : get_default_value ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeUIntParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeUIntParameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeUIntParameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeUIntParameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeUIntParameter : : get_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUIntParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ;  // All qualifiers are supported.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeUIntParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ;  // Conversion is allowed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeUIntParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeUIntParameter : : VisualShaderNodeUIntParameter ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Boolean Parameter
  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " BooleanParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeBooleanParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeBooleanParameter : : PortType  VisualShaderNodeBooleanParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeBooleanParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeBooleanParameter : : PortType  VisualShaderNodeBooleanParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeBooleanParameter : : set_default_value_enabled ( bool  p_default_value_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled  = =  p_default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default_value_enabled  =  p_default_value_enabled ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanParameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeBooleanParameter : : set_default_value ( bool  p_default_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value  = =  p_default_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default_value  =  p_default_value ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanParameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform bool  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( default_value )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  "  = true " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  "  = false " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeBooleanParameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanParameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeBooleanParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeBooleanParameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeBooleanParameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeBooleanParameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeBooleanParameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // all qualifiers are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeBooleanParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeBooleanParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeBooleanParameter : : VisualShaderNodeBooleanParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2019-02-22 20:38:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Color Parameter
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " ColorParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeColorParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeColorParameter : : PortType  VisualShaderNodeColorParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-07 08:40:19 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeColorParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-07 08:40:19 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeColorParameter : : PortType  VisualShaderNodeColorParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-07 08:40:19 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  p_port  = =  0  ?  PORT_TYPE_VECTOR_4D  :  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-07 08:40:19 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " color " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeColorParameter : : is_output_port_expandable ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-07 08:40:19 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeColorParameter : : set_default_value_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled  = =  p_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value_enabled  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeColorParameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeColorParameter : : set_default_value ( const  Color  & p_value )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value . is_equal_approx ( p_value ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Color  VisualShaderNodeColorParameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform vec4  "  +  get_parameter_name ( )  +  "  : source_color " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  vformat ( "  = vec4(%.6f, %.6f, %.6f, %.6f) " ,  default_value . r ,  default_value . g ,  default_value . b ,  default_value . a ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeColorParameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeColorParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeColorParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeColorParameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeColorParameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeColorParameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeColorParameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : COLOR ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeColorParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // all qualifiers are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeColorParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeColorParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeColorParameter : : VisualShaderNodeColorParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector2 Parameter
  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Parameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Vector2Parameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVec2Parameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec2Parameter : : PortType  VisualShaderNodeVec2Parameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Parameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVec2Parameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec2Parameter : : PortType  VisualShaderNodeVec2Parameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Parameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec2Parameter : : set_default_value_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value_enabled  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec2Parameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec2Parameter : : set_default_value ( const  Vector2  & p_value )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector2  VisualShaderNodeVec2Parameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Parameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform vec2  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  vformat ( "  = vec2(%.6f, %.6f) " ,  default_value . x ,  default_value . y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec2Parameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec2Parameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeVec2Parameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeVec2Parameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeVec2Parameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeVec2Parameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : VECTOR2 ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec2Parameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec2Parameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec2Parameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // all qualifiers are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec2Parameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVec2Parameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec2Parameter : : VisualShaderNodeVec2Parameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector3 Parameter
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Parameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Vector3Parameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVec3Parameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec3Parameter : : PortType  VisualShaderNodeVec3Parameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Parameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVec3Parameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec3Parameter : : PortType  VisualShaderNodeVec3Parameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Parameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec3Parameter : : set_default_value_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value_enabled  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec3Parameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec3Parameter : : set_default_value ( const  Vector3  & p_value )  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector3  VisualShaderNodeVec3Parameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Parameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform vec3  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  vformat ( "  = vec3(%.6f, %.6f, %.6f) " ,  default_value . x ,  default_value . y ,  default_value . z ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec3Parameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec3Parameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeVec3Parameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeVec3Parameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeVec3Parameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeVec3Parameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : VECTOR3 ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec3Parameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec3Parameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec3Parameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // all qualifiers are supported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec3Parameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVec3Parameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec3Parameter : : VisualShaderNodeVec3Parameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Vector4 Parameter
  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Parameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Vector4Parameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVec4Parameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec4Parameter : : PortType  VisualShaderNodeVec4Parameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Parameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeVec4Parameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec4Parameter : : PortType  VisualShaderNodeVec4Parameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Parameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ;  // No output port means the editor will be used as port.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec4Parameter : : set_default_value_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value_enabled  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec4Parameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec4Parameter : : set_default_value ( const  Vector4  & p_value )  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector4  VisualShaderNodeVec4Parameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Parameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform vec4  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  vformat ( "  = vec4(%.6f, %.6f, %.6f, %.6f) " ,  default_value . x ,  default_value . y ,  default_value . z ,  default_value . w ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeVec4Parameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeVec4Parameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeVec4Parameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeVec4Parameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeVec4Parameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeVec4Parameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : VECTOR4 ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec4Parameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec4Parameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec4Parameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // All qualifiers are supported.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeVec4Parameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // Conversion is allowed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeVec4Parameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeVec4Parameter : : VisualShaderNodeVec4Parameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Transform Parameter
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " TransformParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformParameter : : PortType  VisualShaderNodeTransformParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTransformParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformParameter : : PortType  VisualShaderNodeTransformParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  " " ;  //no output port means the editor will be used as port
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformParameter : : set_default_value_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value_enabled  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTransformParameter : : is_default_value_enabled ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformParameter : : set_default_value ( const  Transform3D  & p_value )  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									default_value  =  p_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Transform3D  VisualShaderNodeTransformParameter : : get_default_value ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  default_value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform mat4  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-03 07:50:35 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Vector3  row0  =  default_value . basis . rows [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector3  row1  =  default_value . basis . rows [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector3  row2  =  default_value . basis . rows [ 2 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Vector3  origin  =  default_value . origin ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  "  = mat4( "  +  vformat ( " vec4(%.6f, %.6f, %.6f, 0.0) " ,  row0 . x ,  row0 . y ,  row0 . z )  +  vformat ( " , vec4(%.6f, %.6f, %.6f, 0.0) " ,  row1 . x ,  row1 . y ,  row1 . z )  +  vformat ( " , vec4(%.6f, %.6f, %.6f, 0.0) " ,  row2 . x ,  row2 . y ,  row2 . z )  +  vformat ( " , vec4(%.6f, %.6f, %.6f, 1.0) " ,  origin . x ,  origin . y ,  origin . z )  +  " ) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTransformParameter : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  get_parameter_name ( )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTransformParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value_enabled " ,  " enabled " ) ,  & VisualShaderNodeTransformParameter : : set_default_value_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_default_value_enabled " ) ,  & VisualShaderNodeTransformParameter : : is_default_value_enabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_default_value " ,  " value " ) ,  & VisualShaderNodeTransformParameter : : set_default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_default_value " ) ,  & VisualShaderNodeTransformParameter : : get_default_value ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " default_value_enabled " ) ,  " set_default_value_enabled " ,  " is_default_value_enabled " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-28 03:36:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : TRANSFORM3D ,  " default_value " ) ,  " set_default_value " ,  " get_default_value " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTransformParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTransformParameter : : is_use_prop_slots ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-21 14:32:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTransformParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-12 16:55:14 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_qual  = =  Qualifier : : QUAL_INSTANCE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTransformParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ;  // conversion is allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTransformParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 14:33:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " default_value_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( default_value_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " default_value " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTransformParameter : : VisualShaderNodeTransformParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//////////////
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  get_sampler_hint ( VisualShaderNodeTextureParameter : : TextureType  p_texture_type ,  VisualShaderNodeTextureParameter : : ColorDefault  p_color_default ,  VisualShaderNodeTextureParameter : : TextureFilter  p_texture_filter ,  VisualShaderNodeTextureParameter : : TextureRepeat  p_texture_repeat ,  VisualShaderNodeTextureParameter : : TextureSource  p_texture_source )  {  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  has_colon  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// type
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  type_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										switch  ( p_texture_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : TYPE_DATA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( p_color_default  = =  VisualShaderNodeTextureParameter : : COLOR_DEFAULT_BLACK )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													type_code  =  " hint_default_black " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  if  ( p_color_default  = =  VisualShaderNodeTextureParameter : : COLOR_DEFAULT_TRANSPARENT )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 18:29:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													type_code  =  " hint_default_transparent " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : TYPE_COLOR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												type_code  =  " source_color " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( p_color_default  = =  VisualShaderNodeTextureParameter : : COLOR_DEFAULT_BLACK )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													type_code  + =  " , hint_default_black " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  if  ( p_color_default  = =  VisualShaderNodeTextureParameter : : COLOR_DEFAULT_TRANSPARENT )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 18:29:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													type_code  + =  " , hint_default_transparent " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : TYPE_NORMAL_MAP : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												type_code  =  " hint_normal " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : TYPE_ANISOTROPY : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												type_code  =  " hint_anisotropy " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! type_code . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  "  :  "  +  type_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											has_colon  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// filter
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  filter_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										switch  ( p_texture_filter )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : FILTER_NEAREST : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												filter_code  =  " filter_nearest " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : FILTER_LINEAR : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												filter_code  =  " filter_linear " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : FILTER_NEAREST_MIPMAP : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												filter_code  =  " filter_nearest_mipmap " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : FILTER_LINEAR_MIPMAP : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												filter_code  =  " filter_linear_mipmap " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : FILTER_NEAREST_MIPMAP_ANISOTROPIC : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												filter_code  =  " filter_nearest_mipmap_anisotropic " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : FILTER_LINEAR_MIPMAP_ANISOTROPIC : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												filter_code  =  " filter_linear_mipmap_anisotropic " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! filter_code . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! has_colon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  "  :  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_colon  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " ,  " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  filter_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// repeat
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  repeat_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										switch  ( p_texture_repeat )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : REPEAT_ENABLED : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												repeat_code  =  " repeat_enable " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : REPEAT_DISABLED : 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												repeat_code  =  " repeat_disable " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! repeat_code . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! has_colon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  "  :  " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " ,  " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  repeat_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  source_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( p_texture_source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : SOURCE_SCREEN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												source_code  =  " hint_screen_texture " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : SOURCE_DEPTH : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												source_code  =  " hint_depth_texture " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  VisualShaderNodeTextureParameter : : SOURCE_NORMAL_ROUGHNESS : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												source_code  =  " hint_normal_roughness_texture " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! source_code . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! has_colon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  "  :  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " ,  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  source_code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Texture Parameter
  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTextureParameter : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : PortType  VisualShaderNodeTextureParameter : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameter : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTextureParameter : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : PortType  VisualShaderNodeTextureParameter : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SAMPLER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameter : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTextureParameter : : set_texture_type ( TextureType  p_texture_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_texture_type ) ,  int ( TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( texture_type  = =  p_texture_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_type  =  p_texture_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : TextureType  VisualShaderNodeTextureParameter : : get_texture_type ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  texture_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTextureParameter : : set_color_default ( ColorDefault  p_color_default )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_color_default ) ,  int ( COLOR_DEFAULT_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( color_default  = =  p_color_default )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									color_default  =  p_color_default ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-09-18 19:04:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : ColorDefault  VisualShaderNodeTextureParameter : : get_color_default ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  color_default ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTextureParameter : : set_texture_filter ( TextureFilter  p_filter )  {  
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_filter ) ,  int ( FILTER_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( texture_filter  = =  p_filter )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_filter  =  p_filter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : TextureFilter  VisualShaderNodeTextureParameter : : get_texture_filter ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  texture_filter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTextureParameter : : set_texture_repeat ( TextureRepeat  p_repeat )  {  
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_repeat ) ,  int ( REPEAT_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( texture_repeat  = =  p_repeat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_repeat  =  p_repeat ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : TextureRepeat  VisualShaderNodeTextureParameter : : get_texture_repeat ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  texture_repeat ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTextureParameter : : set_texture_source ( TextureSource  p_source )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_source ) ,  int ( SOURCE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( texture_source  = =  p_source )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									texture_source  =  p_source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : TextureSource  VisualShaderNodeTextureParameter : : get_texture_source ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  texture_source ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeTextureParameter : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props  =  VisualShaderNodeParameter : : get_editable_properties ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									props . push_back ( " texture_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( texture_type  = =  TYPE_DATA  | |  texture_type  = =  TYPE_COLOR )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										props . push_back ( " color_default " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " texture_filter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " texture_repeat " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " texture_source " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTextureParameter : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								HashMap < StringName ,  String >  VisualShaderNodeTextureParameter : : get_editable_properties_names ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HashMap < StringName ,  String >  names ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									names . insert ( " texture_type " ,  RTR ( " Type " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									names . insert ( " color_default " ,  RTR ( " Default Color " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									names . insert ( " texture_filter " ,  RTR ( " Filter " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									names . insert ( " texture_repeat " ,  RTR ( " Repeat " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									names . insert ( " texture_source " ,  RTR ( " Source " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  names ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeTextureParameter : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_type " ,  " type " ) ,  & VisualShaderNodeTextureParameter : : set_texture_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_type " ) ,  & VisualShaderNodeTextureParameter : : get_texture_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_color_default " ,  " color " ) ,  & VisualShaderNodeTextureParameter : : set_color_default ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_color_default " ) ,  & VisualShaderNodeTextureParameter : : get_color_default ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_filter " ,  " filter " ) ,  & VisualShaderNodeTextureParameter : : set_texture_filter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_filter " ) ,  & VisualShaderNodeTextureParameter : : get_texture_filter ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_repeat " ,  " repeat " ) ,  & VisualShaderNodeTextureParameter : : set_texture_repeat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_repeat " ) ,  & VisualShaderNodeTextureParameter : : get_texture_repeat ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_texture_source " ,  " source " ) ,  & VisualShaderNodeTextureParameter : : set_texture_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_texture_source " ) ,  & VisualShaderNodeTextureParameter : : get_texture_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-22 04:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " texture_type " ,  PROPERTY_HINT_ENUM ,  " Data,Color,Normal Map,Anisotropic " ) ,  " set_texture_type " ,  " get_texture_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 18:29:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " color_default " ,  PROPERTY_HINT_ENUM ,  " White,Black,Transparent " ) ,  " set_color_default " ,  " get_color_default " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " texture_filter " ,  PROPERTY_HINT_ENUM ,  " Default,Nearest,Linear,Nearest Mipmap,Linear Mipmap,Nearest Mipmap Anisotropic,Linear Mipmap Anisotropic " ) ,  " set_texture_filter " ,  " get_texture_filter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " texture_repeat " ,  PROPERTY_HINT_ENUM ,  " Default,Enabled,Disabled " ) ,  " set_texture_repeat " ,  " get_texture_repeat " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " texture_source " ,  PROPERTY_HINT_ENUM ,  " None,Screen,Depth,NormalRoughness " ) ,  " set_texture_source " ,  " get_texture_source " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_DATA ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_COLOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-23 09:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_NORMAL_MAP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 20:29:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_ANISOTROPY ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COLOR_DEFAULT_WHITE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COLOR_DEFAULT_BLACK ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 18:29:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COLOR_DEFAULT_TRANSPARENT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COLOR_DEFAULT_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-16 11:41:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_DEFAULT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_NEAREST ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_LINEAR ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_NEAREST_MIPMAP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_LINEAR_MIPMAP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_NEAREST_MIPMAP_ANISOTROPIC ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_LINEAR_MIPMAP_ANISOTROPIC ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FILTER_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( REPEAT_DEFAULT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( REPEAT_ENABLED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( REPEAT_DISABLED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( REPEAT_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_NONE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_SCREEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_DEPTH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_NORMAL_ROUGHNESS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( SOURCE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTextureParameter : : is_qualifier_supported ( Qualifier  p_qual )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_qual )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  Qualifier : : QUAL_NONE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  Qualifier : : QUAL_GLOBAL : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  Qualifier : : QUAL_INSTANCE : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-05 11:25:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTextureParameter : : is_convertible_to_constant ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-04-04 15:09:29 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ;  // conversion is not allowed
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameter : : VisualShaderNodeTextureParameter ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Texture2D Parameter
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Texture2DParameter " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " sampler2D " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform sampler2D  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  get_sampler_hint ( texture_type ,  color_default ,  texture_filter ,  texture_repeat ,  texture_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTexture2DParameter : : VisualShaderNodeTexture2DParameter ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Texture Parameter (Triplanar)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2023-01-17 12:10:01 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " TextureParameterTriplanar " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTextureParameterTriplanar : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameterTriplanar : : PortType  VisualShaderNodeTextureParameterTriplanar : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-03-01 08:03:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0  | |  p_port  = =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " weights " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " pos " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  VisualShaderNodeTextureParameterTriplanar : : get_output_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameterTriplanar : : PortType  VisualShaderNodeTextureParameterTriplanar : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SAMPLER ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " color " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " sampler2D " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : generate_global_per_node ( Shader : : Mode  p_mode ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-07 22:58:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " //  "  +  get_caption ( )  +  " \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	vec4 triplanar_texture(sampler2D p_sampler, vec3 p_weights, vec3 p_triplanar_pos) { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		vec4 samp = vec4(0.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		samp += texture(p_sampler, p_triplanar_pos.xy) * p_weights.z; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		samp += texture(p_sampler, p_triplanar_pos.xz) * p_weights.y; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		samp += texture(p_sampler, p_triplanar_pos.zy * vec2(-1.0, 1.0)) * p_weights.x; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		return samp; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	uniform vec3 triplanar_scale = vec3(1.0, 1.0, 1.0); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	uniform vec3 triplanar_offset; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	uniform float triplanar_sharpness = 0.5; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	varying vec3 triplanar_power_normal; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	varying vec3 triplanar_pos; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : generate_global_per_func ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_type  = =  VisualShader : : TYPE_VERTEX )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-07 22:58:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " //  "  +  get_caption ( )  +  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 		triplanar_power_normal = pow(abs(NORMAL), vec3(triplanar_sharpness)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		triplanar_power_normal /= dot(triplanar_power_normal, vec3(1.0)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		triplanar_pos = VERTEX * triplanar_scale + triplanar_offset; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		triplanar_pos *= vec3(1.0, -1.0, 1.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-07 22:58:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-07 07:02:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform sampler2D  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  get_sampler_hint ( texture_type ,  color_default ,  texture_filter ,  texture_repeat ,  texture_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-07 07:02:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTextureParameterTriplanar : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  id  =  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_input_vars [ 0 ] . is_empty ( )  & &  p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = triplanar_texture( "  +  id  +  " , triplanar_power_normal, triplanar_pos); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( ! p_input_vars [ 0 ] . is_empty ( )  & &  p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = triplanar_texture( "  +  id  +  " ,  "  +  p_input_vars [ 0 ]  +  " , triplanar_pos); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_input_vars [ 0 ] . is_empty ( )  & &  ! p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = triplanar_texture( "  +  id  +  " , triplanar_power_normal,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-22 20:31:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = triplanar_texture( "  +  id  +  " ,  "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeTextureParameterTriplanar : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-03 10:40:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-03 10:40:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-03 10:40:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-03 10:40:26 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTextureParameterTriplanar : : VisualShaderNodeTextureParameterTriplanar ( )  {  
						 
					
						
							
								
									
										
										
										
											2019-07-12 12:14:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Texture2DArray Parameter
  
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DArrayParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Texture2DArrayParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DArrayParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " sampler2DArray " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture2DArrayParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform sampler2DArray  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  get_sampler_hint ( texture_type ,  color_default ,  texture_filter ,  texture_repeat ,  texture_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTexture2DArrayParameter : : VisualShaderNodeTexture2DArrayParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Texture3D Parameter
  
						 
					
						
							
								
									
										
										
										
											2020-02-18 14:45:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture3DParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Texture3DParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture3DParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " sampler3D " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeTexture3DParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform sampler3D  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  get_sampler_hint ( texture_type ,  color_default ,  texture_filter ,  texture_repeat ,  texture_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeTexture3DParameter : : VisualShaderNodeTexture3DParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-10 06:47:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Cubemap Parameter
  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemapParameter : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " CubemapParameter " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemapParameter : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-10-11 10:26:57 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " samplerCube " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 11:29:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeCubemapParameter : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code  =  _get_qual_str ( )  +  " uniform samplerCube  "  +  get_parameter_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 11:55:59 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  get_sampler_hint ( texture_type ,  color_default ,  texture_filter ,  texture_repeat ,  texture_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-05 21:23:40 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 11:29:23 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-27 12:22:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCubemapParameter : : VisualShaderNodeCubemapParameter ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-07-14 18:15:42 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// If
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIf : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " If " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIf : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIf : : PortType  VisualShaderNodeIf : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0  | |  p_port  = =  1  | |  p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIf : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " a " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " tolerance " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " a == b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " a > b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  5 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " a < b " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIf : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIf : : PortType  VisualShaderNodeIf : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIf : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " result " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIf : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	if(abs( "  +  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ) <  "  +  p_input_vars [ 2 ]  +  " ) \n " ;  // abs(a - b) < tolerance eg. a == b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 3 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	else if( "  +  p_input_vars [ 0 ]  +  "  <  "  +  p_input_vars [ 1 ]  +  " ) \n " ;  // a < b
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 5 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	else \n " ;  // a > b (or a >= b if abs(a - b) < tolerance is false)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 4 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIf : : VisualShaderNodeIf ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-07 12:29:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  CMP_EPSILON ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 3 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 4 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 5 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Switch
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSwitch : : get_caption ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " Switch " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeSwitch : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSwitch : : PortType  VisualShaderNodeSwitch : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  1  | |  p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  OP_TYPE_INT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  OP_TYPE_UINT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  OP_TYPE_BOOLEAN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  OP_TYPE_TRANSFORM : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSwitch : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " value " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " true " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " false " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeSwitch : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSwitch : : PortType  VisualShaderNodeSwitch : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_INT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_UINT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_BOOLEAN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_TRANSFORM : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeSwitch : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " result " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeSwitch : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_op_type ) ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_FLOAT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  1.0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_UINT : 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_INT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  1 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0 ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( 1.0 ,  1.0 ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( 0.0 ,  0.0 ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( 1.0 ,  1.0 ,  1.0 ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( 0.0 ,  0.0 ,  0.0 ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( 1.0 ,  1.0 ,  1.0 ,  1.0 ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Quaternion ( 0.0 ,  0.0 ,  0.0 ,  0.0 ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_BOOLEAN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_TRANSFORM : 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSwitch : : OpType  VisualShaderNodeSwitch : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeSwitch : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeSwitch : : _bind_methods ( )  {  // static
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " type " ) ,  & VisualShaderNodeSwitch : : set_op_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeSwitch : : get_op_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Float,Int,UInt,Vector2,Vector3,Vector4,Boolean,Transform " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_FLOAT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_INT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_UINT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_BOOLEAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_TRANSFORM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeSwitch : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2023-01-31 09:36:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  use_mix  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_FLOAT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											use_mix  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											use_mix  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											use_mix  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											use_mix  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-31 09:36:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( use_mix )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = mix( "  +  p_input_vars [ 2 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " , float( "  +  p_input_vars [ 0 ]  +  " )); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	if ( "  +  p_input_vars [ 0 ]  +  " ) { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 1 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	} else { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 2 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-13 15:24:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeSwitch : : VisualShaderNodeSwitch ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-07 12:29:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-03 14:46:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  1.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								////////////// Fresnel
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeFresnel : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Fresnel " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeFresnel : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeFresnel : : PortType  VisualShaderNodeFresnel : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeFresnel : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " normal " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " view " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " invert " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " power " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeFresnel : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeFresnel : : PortType  VisualShaderNodeFresnel : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeFresnel : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " result " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 09:18:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFresnel : : is_generate_input_var ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeFresnel : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  normal ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  view ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_input_vars [ 0 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											normal  =  " NORMAL " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											normal  =  " vec3(0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										normal  =  p_input_vars [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_input_vars [ 1 ] . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											view  =  " VIEW " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											view  =  " vec3(0.0) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										view  =  p_input_vars [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 09:18:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( is_input_port_connected ( 2 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  p_input_vars [ 2 ]  +  "  ? (pow(clamp(dot( "  +  normal  +  " ,  "  +  view  +  " ), 0.0, 1.0),  "  +  p_input_vars [ 3 ]  +  " )) : (pow(1.0 - clamp(dot( "  +  normal  +  " ,  "  +  view  +  " ), 0.0, 1.0),  "  +  p_input_vars [ 3 ]  +  " )); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 09:18:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( get_input_port_default_value ( 2 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  = pow(clamp(dot( "  +  normal  +  " ,  "  +  view  +  " ), 0.0, 1.0),  "  +  p_input_vars [ 3 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 09:18:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  " 	 "  +  p_output_vars [ 0 ]  +  "  = pow(1.0 - clamp(dot( "  +  normal  +  " ,  "  +  view  +  " ), 0.0, 1.0),  "  +  p_input_vars [ 3 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-27 09:18:37 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeFresnel : : is_input_port_default ( int  p_port ,  Shader : : Mode  p_mode )  const  {  
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_mode  = =  Shader : : MODE_CANVAS_ITEM  | |  p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_mode  = =  Shader : : MODE_SPATIAL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-22 18:28:59 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-22 11:09:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-05-19 13:07:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeFresnel : : VisualShaderNodeFresnel ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 3 ,  1.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Is
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIs : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Is " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIs : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIs : : PortType  VisualShaderNodeIs : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIs : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeIs : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIs : : PortType  VisualShaderNodeIs : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIs : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeIs : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" isinf($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" isnan($) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIs : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIs : : Function  VisualShaderNodeIs : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeIs : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeIs : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeIs : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeIs : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " Inf,NaN " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_IS_INF ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_IS_NAN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeIs : : VisualShaderNodeIs ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Compare
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCompare : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Compare " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeCompare : : get_input_port_count ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( comparison_type  = =  CTYPE_SCALAR  & &  ( func  = =  FUNC_EQUAL  | |  func  = =  FUNC_NOT_EQUAL ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCompare : : PortType  VisualShaderNodeCompare : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( comparison_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR_INT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_INT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR_UINT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR_UINT ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_BOOLEAN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_TRANSFORM : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-01 08:03:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCompare : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " a " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " b " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " tolerance " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeCompare : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCompare : : PortType  VisualShaderNodeCompare : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_BOOLEAN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCompare : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " result " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCompare : : get_warning ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( comparison_type  = =  CTYPE_BOOLEAN  | |  comparison_type  = =  CTYPE_TRANSFORM )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( func  >  FUNC_NOT_EQUAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-28 15:24:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  RTR ( " Invalid comparison function for that type. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeCompare : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * operators [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" == " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" != " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" > " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" >= " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" < " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" <= " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * functions [ FUNC_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" equal($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" notEqual($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" greaterThan($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" greaterThanEqual($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" lessThan($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" lessThanEqual($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									static  const  char  * conditions [ COND_MAX ]  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										" all($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										" any($) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( comparison_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR :  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( func  = =  FUNC_EQUAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = (abs( "  +  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ) <  "  +  p_input_vars [ 2 ]  +  " ); " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( func  = =  FUNC_NOT_EQUAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = !(abs( "  +  p_input_vars [ 0 ]  +  "  -  "  +  p_input_vars [ 1 ]  +  " ) <  "  +  p_input_vars [ 2 ]  +  " ); " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  ( p_input_vars [ 0 ]  +  "  $  "  +  p_input_vars [ 1 ] ) . replace ( " $ " ,  operators [ func ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR_UINT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR_INT :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  ( p_input_vars [ 0 ]  +  "  $  "  +  p_input_vars [ 1 ] ) . replace ( " $ " ,  operators [ func ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		bvec2 _bv =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( conditions [ condition ] ) . replace ( " $ " ,  " _bv " )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		bvec3 _bv =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( conditions [ condition ] ) . replace ( " $ " ,  " _bv " )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		bvec4 _bv =  "  +  String ( functions [ func ] ) . replace ( " $ " ,  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  =  "  +  String ( conditions [ condition ] ) . replace ( " $ " ,  " _bv " )  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_BOOLEAN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( func  >  FUNC_NOT_EQUAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  " 	 "  +  p_output_vars [ 0 ]  +  "  = false; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  ( p_input_vars [ 0 ]  +  "  $  "  +  p_input_vars [ 1 ] ) . replace ( " $ " ,  operators [ func ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_TRANSFORM :  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( func  >  FUNC_NOT_EQUAL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												return  " 	 "  +  p_output_vars [ 0 ]  +  "  = false; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  =  "  +  ( p_input_vars [ 0 ]  +  "  $  "  +  p_input_vars [ 1 ] ) . replace ( " $ " ,  operators [ func ] )  +  " ; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCompare : : set_comparison_type ( ComparisonType  p_comparison_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_comparison_type ) ,  int ( CTYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( comparison_type  = =  p_comparison_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_comparison_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0.0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR_UINT : 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_SCALAR_INT : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_3D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Quaternion ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Quaternion ( ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CTYPE_BOOLEAN : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  CTYPE_TRANSFORM : 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-17 01:08:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Transform3D ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 12:10:51 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											simple_decl  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									comparison_type  =  p_comparison_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-23 10:31:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeCompare : : ComparisonType  VisualShaderNodeCompare : : get_comparison_type ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  comparison_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeCompare : : set_function ( Function  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_func ) ,  int ( FUNC_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( func  = =  p_func )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									func  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCompare : : Function  VisualShaderNodeCompare : : get_function ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeCompare : : set_condition ( Condition  p_condition )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_condition ) ,  int ( COND_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( condition  = =  p_condition )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									condition  =  p_condition ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCompare : : Condition  VisualShaderNodeCompare : : get_condition ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  condition ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeCompare : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " function " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( comparison_type  = =  CTYPE_VECTOR_2D  | |  comparison_type  = =  CTYPE_VECTOR_3D  | |  comparison_type  = =  CTYPE_VECTOR_4D )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										props . push_back ( " condition " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeCompare : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-01-23 10:31:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_comparison_type " ,  " type " ) ,  & VisualShaderNodeCompare : : set_comparison_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_comparison_type " ) ,  & VisualShaderNodeCompare : : get_comparison_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_function " ,  " func " ) ,  & VisualShaderNodeCompare : : set_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_function " ) ,  & VisualShaderNodeCompare : : get_function ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_condition " ,  " condition " ) ,  & VisualShaderNodeCompare : : set_condition ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_condition " ) ,  & VisualShaderNodeCompare : : get_condition ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " type " ,  PROPERTY_HINT_ENUM ,  " Float,Int,UInt,Vector2,Vector3,Vector4,Boolean,Transform " ) ,  " set_comparison_type " ,  " get_comparison_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " function " ,  PROPERTY_HINT_ENUM ,  " a == b,a != b,a > b,a >= b,a < b,a <= b " ) ,  " set_function " ,  " get_function " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " condition " ,  PROPERTY_HINT_ENUM ,  " All,Any " ) ,  " set_condition " ,  " get_condition " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-25 17:50:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_SCALAR_INT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-27 20:49:11 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_SCALAR_UINT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_BOOLEAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_TRANSFORM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( CTYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_EQUAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_NOT_EQUAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_GREATER_THAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_GREATER_THAN_EQUAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_LESS_THAN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_LESS_THAN_EQUAL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( FUNC_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COND_ALL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COND_ANY ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( COND_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-08 10:05:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeCompare : : VisualShaderNodeCompare ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  CMP_EPSILON ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Fma
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeMultiplyAdd : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " MultiplyAdd " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeMultiplyAdd : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeMultiplyAdd : : PortType  VisualShaderNodeMultiplyAdd : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-01 08:03:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeMultiplyAdd : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_port  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " a " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " b(*) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_port  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " c(+) " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeMultiplyAdd : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeMultiplyAdd : : PortType  VisualShaderNodeMultiplyAdd : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_2D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D : 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-06 20:15:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_4D ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeMultiplyAdd : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeMultiplyAdd : : 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 )  const  {  
						 
					
						
							
								
									
										
										
										
											2023-02-08 12:37:20 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( OS : : get_singleton ( ) - > get_current_rendering_method ( )  = =  " gl_compatibility " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " 	 "  +  p_output_vars [ 0 ]  +  "  = ( "  +  p_input_vars [ 0 ]  +  "  *  "  +  p_input_vars [ 1 ]  +  " ) +  "  +  p_input_vars [ 2 ]  +  " ; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  " 	 "  +  p_output_vars [ 0 ]  +  "  = fma( "  +  p_input_vars [ 0 ]  +  " ,  "  +  p_input_vars [ 1 ]  +  " ,  "  +  p_input_vars [ 2 ]  +  " ); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  VisualShaderNodeMultiplyAdd : : set_op_type ( OpType  p_op_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( ( int ) p_op_type ,  int ( OP_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( op_type  = =  p_op_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_op_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_SCALAR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  0.0 ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 15:14:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  1.0 ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  0.0 ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_2D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector2 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 15:14:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector2 ( 1.0 ,  1.0 ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector2 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_3D :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector3 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 15:14:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector3 ( 1.0 ,  1.0 ,  1.0 ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector3 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  OP_TYPE_VECTOR_4D :  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 15:14:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											set_input_port_default_value ( 0 ,  Vector4 ( ) ,  get_input_port_default_value ( 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 1 ,  Vector4 ( 1.0 ,  1.0 ,  1.0 ,  1.0 ) ,  get_input_port_default_value ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_input_port_default_value ( 2 ,  Vector4 ( ) ,  get_input_port_default_value ( 2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-18 12:23:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									op_type  =  p_op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VisualShaderNodeMultiplyAdd : : OpType  VisualShaderNodeMultiplyAdd : : get_op_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  op_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeMultiplyAdd : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									props . push_back ( " op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeMultiplyAdd : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_op_type " ,  " type " ) ,  & VisualShaderNodeMultiplyAdd : : set_op_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_op_type " ) ,  & VisualShaderNodeMultiplyAdd : : get_op_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " op_type " ,  PROPERTY_HINT_ENUM ,  " Scalar,Vector2,Vector3,Vector4 " ) ,  " set_op_type " ,  " get_op_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_SCALAR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-01 11:32:01 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_2D ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_3D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-12 19:09:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_VECTOR_4D ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 11:06:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( OP_TYPE_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeMultiplyAdd : : VisualShaderNodeMultiplyAdd ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 15:14:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  1.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-14 23:09:53 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Billboard
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBillboard : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " GetBillboardMatrix " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeBillboard : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBillboard : : PortType  VisualShaderNodeBillboard : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBillboard : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeBillboard : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBillboard : : PortType  VisualShaderNodeBillboard : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_TRANSFORM ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBillboard : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " model_view_matrix " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeBillboard : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( billboard_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  BILLBOARD_TYPE_ENABLED : 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-18 12:10:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		mat4 __mvm = VIEW_MATRIX * mat4(INV_VIEW_MATRIX[0], INV_VIEW_MATRIX[1], INV_VIEW_MATRIX[2], MODEL_MATRIX[3]); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( keep_scale )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-18 12:10:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 		__mvm = __mvm * mat4(vec4(length(MODEL_MATRIX[0].xyz), 0.0, 0.0, 0.0), vec4(0.0, length(MODEL_MATRIX[1].xyz), 0.0, 0.0), vec4(0.0, 0.0, length(MODEL_MATRIX[2].xyz), 0.0), vec4(0.0, 0.0, 0.0, 1.0)); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = __mvm; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  BILLBOARD_TYPE_FIXED_Y : 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-18 12:10:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		mat4 __mvm = VIEW_MATRIX * mat4(INV_VIEW_MATRIX[0], MODEL_MATRIX[1], vec4(normalize(cross(INV_VIEW_MATRIX[0].xyz, MODEL_MATRIX[1].xyz)), 0.0), MODEL_MATRIX[3]); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( keep_scale )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-18 12:10:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 		__mvm = __mvm * mat4(vec4(length(MODEL_MATRIX[0].xyz), 0.0, 0.0, 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(0.0, 0.0, length(MODEL_MATRIX[2].xyz), 0.0), vec4(0.0, 0.0, 0.0, 1.0)); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-18 12:10:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												code  + =  " 		__mvm = __mvm * mat4(vec4(1.0, 0.0, 0.0, 0.0), vec4(0.0, 1.0 / length(MODEL_MATRIX[1].xyz), 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0)); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = __mvm; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  BILLBOARD_TYPE_PARTICLES : 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-13 21:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		mat4 __wm = mat4(normalize(INV_VIEW_MATRIX[0]), normalize(INV_VIEW_MATRIX[1]), normalize(INV_VIEW_MATRIX[2]), MODEL_MATRIX[3]); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		__wm = __wm * mat4(vec4(cos(INSTANCE_CUSTOM.x), -sin(INSTANCE_CUSTOM.x), 0.0, 0.0), vec4(sin(INSTANCE_CUSTOM.x), cos(INSTANCE_CUSTOM.x), 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0)); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-13 21:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( keep_scale )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												code  + =  " 		__wm = __wm * mat4(vec4(length(MODEL_MATRIX[0].xyz), 0.0, 0.0, 0.0), vec4(0.0, length(MODEL_MATRIX[1].xyz), 0.0, 0.0), vec4(0.0, 0.0, length(MODEL_MATRIX[2].xyz), 0.0), vec4(0.0, 0.0, 0.0, 1.0)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-18 12:10:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 		 "  +  p_output_vars [ 0 ]  +  "  = VIEW_MATRIX * __wm; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 08:06:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											code  + =  " 	 "  +  p_output_vars [ 0 ]  +  "  = mat4(1.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeBillboard : : is_show_prop_names ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeBillboard : : set_billboard_type ( BillboardType  p_billboard_type )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-14 13:38:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( int ( p_billboard_type ) ,  int ( BILLBOARD_TYPE_MAX ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( billboard_type  = =  p_billboard_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									billboard_type  =  p_billboard_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									simple_decl  =  bool ( billboard_type  = =  BILLBOARD_TYPE_DISABLED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_disabled ( simple_decl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBillboard : : BillboardType  VisualShaderNodeBillboard : : get_billboard_type ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  billboard_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeBillboard : : set_keep_scale_enabled ( bool  p_enabled )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									keep_scale  =  p_enabled ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  VisualShaderNodeBillboard : : is_keep_scale_enabled ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  keep_scale ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Vector < StringName >  VisualShaderNodeBillboard : : get_editable_properties ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < StringName >  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									props . push_back ( " billboard_type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-13 21:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( billboard_type  = =  BILLBOARD_TYPE_ENABLED  | |  billboard_type  = =  BILLBOARD_TYPE_FIXED_Y  | |  billboard_type  = =  BILLBOARD_TYPE_PARTICLES )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 22:17:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										props . push_back ( " keep_scale " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  props ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  VisualShaderNodeBillboard : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_billboard_type " ,  " billboard_type " ) ,  & VisualShaderNodeBillboard : : set_billboard_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_billboard_type " ) ,  & VisualShaderNodeBillboard : : get_billboard_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " set_keep_scale_enabled " ,  " enabled " ) ,  & VisualShaderNodeBillboard : : set_keep_scale_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " is_keep_scale_enabled " ) ,  & VisualShaderNodeBillboard : : is_keep_scale_enabled ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : INT ,  " billboard_type " ,  PROPERTY_HINT_ENUM ,  " Disabled,Enabled,Y-Billboard,Particles " ) ,  " set_billboard_type " ,  " get_billboard_type " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_PROPERTY ( PropertyInfo ( Variant : : BOOL ,  " keep_scale " ) ,  " set_keep_scale_enabled " ,  " is_keep_scale_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( BILLBOARD_TYPE_DISABLED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( BILLBOARD_TYPE_ENABLED ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( BILLBOARD_TYPE_FIXED_Y ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( BILLBOARD_TYPE_PARTICLES ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIND_ENUM_CONSTANT ( BILLBOARD_TYPE_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeBillboard : : VisualShaderNodeBillboard ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// DistanceFade
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDistanceFade : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " DistanceFade " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeDistanceFade : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDistanceFade : : PortType  VisualShaderNodeDistanceFade : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDistanceFade : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " min " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " max " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeDistanceFade : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDistanceFade : : PortType  VisualShaderNodeDistanceFade : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeDistanceFade : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " amount " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-03 20:14:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeDistanceFade : : has_output_port_preview ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeDistanceFade : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 	%s = clamp(smoothstep(%s, %s,-VERTEX.z),0.0,1.0); \n " ,  p_output_vars [ 0 ] ,  p_input_vars [ 0 ] ,  p_input_vars [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeDistanceFade : : VisualShaderNodeDistanceFade ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  10.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// ProximityFade
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeProximityFade : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " ProximityFade " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeProximityFade : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeProximityFade : : PortType  VisualShaderNodeProximityFade : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeProximityFade : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " distance " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeProximityFade : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeProximityFade : : PortType  VisualShaderNodeProximityFade : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeProximityFade : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " fade " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-03 20:14:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  VisualShaderNodeProximityFade : : has_output_port_preview ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 22:28:39 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeProximityFade : : generate_global ( Shader : : Mode  p_mode ,  VisualShader : : Type  p_type ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " uniform sampler2D  "  +  make_unique_id ( p_type ,  p_id ,  " depth_tex " )  +  "  : hint_depth_texture; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  VisualShaderNodeProximityFade : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-20 22:28:39 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 		float __depth_tex = texture( "  +  make_unique_id ( p_type ,  p_id ,  " depth_tex " )  +  " , SCREEN_UV).r; \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-31 21:00:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! RenderingServer : : get_singleton ( ) - > is_low_end ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 		vec4 __depth_world_pos = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, __depth_tex, 1.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-31 21:00:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										code  + =  " 		vec4 __depth_world_pos = INV_PROJECTION_MATRIX * vec4(vec3(SCREEN_UV, __depth_tex) * 2.0 - 1.0, 1.0); \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-31 21:00:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 		__depth_world_pos.xyz /= __depth_world_pos.w; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 		%s = clamp(1.0 - smoothstep(__depth_world_pos.z + %s, __depth_world_pos.z, VERTEX.z), 0.0, 1.0); \n " ,  p_output_vars [ 0 ] ,  p_input_vars [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeProximityFade : : VisualShaderNodeProximityFade ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  1.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Random Range
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRandomRange : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " RandomRange " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeRandomRange : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  3 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeRandomRange : : PortType  VisualShaderNodeRandomRange : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_VECTOR_3D ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRandomRange : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " seed " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " min " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " max " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeRandomRange : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeRandomRange : : PortType  VisualShaderNodeRandomRange : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRandomRange : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " value " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRandomRange : : generate_global_per_node ( Shader : : Mode  p_mode ,  int  p_id )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " \n \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " // 3D Noise with friendly permission by Inigo Quilez \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " vec3 hash_noise_range( vec3 p ) { \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	p *= mat3(vec3(127.1, 311.7, -53.7), vec3(269.5, 183.3, 77.1), vec3(-301.7, 27.3, 215.3)); \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	return 2.0 * fract(fract(p)*4375.55) -1.; \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " } \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRandomRange : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 	%s = mix(%s, %s, hash_noise_range(%s).x); \n " ,  p_output_vars [ 0 ] ,  p_input_vars [ 1 ] ,  p_input_vars [ 2 ] ,  p_input_vars [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeRandomRange : : VisualShaderNodeRandomRange ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 0 ,  Vector3 ( 1.0 ,  1.0 ,  1.0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  1.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								////////////// Remap
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRemap : : get_caption ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " Remap " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeRemap : : get_input_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeRemap : : PortType  VisualShaderNodeRemap : : get_input_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRemap : : get_input_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_port )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " value " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " input min " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " input max " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " output min " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  4 : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  " output max " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  VisualShaderNodeRemap : : get_output_port_count ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeRemap : : PortType  VisualShaderNodeRemap : : get_output_port_type ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  PORT_TYPE_SCALAR ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRemap : : get_output_port_name ( int  p_port )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  " value " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								String  VisualShaderNodeRemap : : 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 )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  code ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									code  + =  " 	{ \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 		float __input_range = %s - %s; \n " ,  p_input_vars [ 2 ] ,  p_input_vars [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 		float __output_range = %s - %s; \n " ,  p_input_vars [ 4 ] ,  p_input_vars [ 3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  vformat ( " 		%s = %s + __output_range * ((%s - %s) / __input_range); \n " ,  p_output_vars [ 0 ] ,  p_input_vars [ 3 ] ,  p_input_vars [ 0 ] ,  p_input_vars [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									code  + =  " 	} \n " ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  code ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VisualShaderNodeRemap : : VisualShaderNodeRemap ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 1 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 2 ,  1.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 3 ,  0.0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_input_port_default_value ( 4 ,  1.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-15 09:55:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									simple_decl  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-11 00:39:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}