### Godot version

v4.0.2.stable.official [7a0977ce2]

### System information

GNU/Linux, GLES3 & Vulkan, Intel UHD 770

### Issue description

When passing arrays of color objects to the shader, the shader program cannot get the values, even when converted to vector arrays.

And source_color hint does not convert colors correctly when passed through an array.

```
var colors := [
	Color.hex(0x0088ffff),
	Color.hex(0xff000088),
	Color.hex(0x00ff0000),
	Color.hex(0x0000ffff),
]
func _ready() -> void:
	var shader: ShaderMaterial = mesh.material
	shader.set_shader_parameter("vec4_no_hint", colors)
	shader.set_shader_parameter("vec4_hint", colors)
	shader.set_shader_parameter("vec3_no_hint", colors)
	shader.set_shader_parameter("vec3_hint", colors)
	var cvt_colors = colors.map(func (c): return Vector4(c.r, c.g, c.b, c.a))
	shader.set_shader_parameter("cvt_vec4_no_hint", cvt_colors)
	shader.set_shader_parameter("cvt_vec4_hint", cvt_colors)
	shader.set_shader_parameter("cvt_vec3_no_hint", cvt_colors)
	shader.set_shader_parameter("cvt_vec3_hint", cvt_colors)
```

Result With GLES3:
![图片](https://user-images.githubusercontent.com/20413045/232321140-3118a776-e76e-4e73-954f-c7b4f155d1ec.png)

Result With Vulkan:
![图片](https://user-images.githubusercontent.com/20413045/232321207-d52cb2e5-c644-40a8-89ee-71da8b58e408.png)


### Steps to reproduce

Open the sample project attached, open the test scene, switch to the 3D tab, you will see it.

### Minimal reproduction project

[test-color-uniform-array.tar.gz](https://github.com/godotengine/godot/files/11242561/test-color-uniform-array.tar.gz)

actions.renames["sdf_to_screen_uv"] = "sdf_to_screen_uv";
		actions.renames["screen_uv_to_sdf"] = "screen_uv_to_sdf";
		actions.usage_defines["COLOR"] = "#define COLOR_USED\n";
		actions.usage_defines["SCREEN_UV"] = "#define SCREEN_UV_USED\n";
		actions.usage_defines["SCREEN_PIXEL_SIZE"] = "@SCREEN_UV";
		actions.usage_defines["NORMAL"] = "#define NORMAL_USED\n";
		actions.usage_defines["NORMAL_MAP"] = "#define NORMAL_MAP_USED\n";
		actions.usage_defines["LIGHT"] = "#define LIGHT_SHADER_CODE_USED\n";
		actions.usage_defines["SPECULAR_SHININESS"] = "#define SPECULAR_SHININESS_USED\n";
		actions.render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n";
		actions.render_mode_defines["unshaded"] = "#define MODE_UNSHADED\n";
		actions.render_mode_defines["light_only"] = "#define MODE_LIGHT_ONLY\n";
		actions.global_buffer_array_variable = "global_shader_uniforms";
		shaders.compiler_canvas.initialize(actions);
	}
	{
		
		
		ShaderCompiler::DefaultIdentifierActions actions;
		actions.renames["MODEL_MATRIX"] = "model_matrix";
		actions.renames["MODEL_NORMAL_MATRIX"] = "model_normal_matrix";
		actions.renames["VIEW_MATRIX"] = "scene_data.view_matrix";
		actions.renames["INV_VIEW_MATRIX"] = "scene_data.inv_view_matrix";
		actions.renames["PROJECTION_MATRIX"] = "projection_matrix";
		actions.renames["INV_PROJECTION_MATRIX"] = "inv_projection_matrix";
		actions.renames["MODELVIEW_MATRIX"] = "modelview";
		actions.renames["MODELVIEW_NORMAL_MATRIX"] = "modelview_normal";
		actions.renames["VERTEX"] = "vertex";
		actions.renames["NORMAL"] = "normal";
		actions.renames["TANGENT"] = "tangent";