### Godot version

4.0.3

### System information

Windows10

### Issue description

sky shader accepts uniform vec3, vec4, vec3 array, but not vec4 array

### Steps to reproduce

simply pass Vector4 to uniform vec4[] from gdscript

### Minimal reproduction project

gdscript

sky_material.set_shader_parameter("v3",Vector3(1,0.8,0.5)) - v
sky_material.set_shader_parameter("v4",Vector4(1,0.8,0.5,0.2)) - v
sky_material.set_shader_parameter("v3a",[Vector3(1,0.8,0.5)]) - v
sky_material.set_shader_parameter("v4a",[Vector4(1,0.8,0.5,0.2)]) - x

sky gdshader

uniform vec3 v3;
uniform vec4 v4;
uniform vec3 v3a[1];
uniform vec4 v4a[1];

void sky(){
    COLOR.r = v4a[0].w
}
code += "	vec2 base_uv2 = UV2;\n";
	}
	if (features[FEATURE_HEIGHT_MAPPING] && flags[FLAG_UV1_USE_TRIPLANAR]) {
		
		
		
		if (textures[TEXTURE_ALBEDO].is_valid()) {
			WARN_PRINT(vformat("%s (albedo %s): Height mapping is not supported on triplanar materials. Ignoring height mapping in favor of triplanar mapping.", get_path(), textures[TEXTURE_ALBEDO]->get_path()));
		} else if (!get_path().is_empty()) {
			WARN_PRINT(vformat("%s: Height mapping is not supported on triplanar materials. Ignoring height mapping in favor of triplanar mapping.", get_path()));
		} else {
			
			WARN_PRINT("Height mapping is not supported on triplanar materials. Ignoring height mapping in favor of triplanar mapping.");
		}
	}
	if (!RenderingServer::get_singleton()->is_low_end() && features[FEATURE_HEIGHT_MAPPING] && !flags[FLAG_UV1_USE_TRIPLANAR]) { 
		code += "	{\n";
		code += "		vec3 view_dir = normalize(normalize(-VERTEX)*mat3(TANGENT*heightmap_flip.x,-BINORMAL*heightmap_flip.y,NORMAL));\n"; 
		if (deep_parallax) {
			code += "		float num_layers = mix(float(heightmap_max_layers),float(heightmap_min_layers), abs(dot(vec3(0.0, 0.0, 1.0), view_dir)));\n";
			code += "		float layer_depth = 1.0 / num_layers;\n";
			code += "		float current_layer_depth = 0.0;\n";
			
			code += "		vec2 P = view_dir.xy * heightmap_scale * 0.01;\n";
			code += "		vec2 delta = P / num_layers;\n";
			code += "		vec2 ofs = base_uv;\n";
			if (flags[FLAG_INVERT_HEIGHTMAP]) {
				code += "		float depth = texture(texture_heightmap, ofs).r;\n";
			} else {
				code += "		float depth = 1.0 - texture(texture_heightmap, ofs).r;\n";