### Godot version

v4.0.stable.official [92bee43ad]

### System information

Linux Ubuntu 22.04 with Unity desktop

### Issue description

In a shader using uniform parameters of type vec3 and vec4, the way defaults work is inconsistent.

* vec3 param => OK, default is (0, 0, 0) and explicit default is honored
* vec3 param : source_color => OK, default is black and explicit default is honored
* vec4 param => not OK, default is (0, 0, 0, 0) but explicit default is ignored and keeps using (0, 0, 0, 0)
* vec4 param : source_color => OK, default is white and explicit default is honored

So there are two issues:
* vec4 param without source_color hint ignores explicit default
* vec3 and vec4 react differently when source_color is used but there is no explicit default, to pick a default

Here is a sum-up screenshot of the default values for each case:

EDIT: I realized some vec3 labels are incorrect: since there is no alpha, Clear should be Black and Alpha Gray should just be Gray. This also means that it's normal that the source_color preview looks different on vec4 for those two.

![image](https://user-images.githubusercontent.com/1067772/226680399-e1d43ee8-9e35-457a-a3da-6e91fcfba3c1.png)

### Steps to reproduce

1. Open the sample project attached, open the demo scene
2. Click on Sprite2D
3. In the inspector, unfold Material info and check the shader values (there should be no Revert button visible, so they are the default values). You should see the same inconsistent values as in the screenshot above
4. When an explicit default value is set, you can also modify the value and click on the Revert button to make sure that we refreshed to the last default values


### Minimal reproduction project

[v4.0 - Shader vec3 vec4 default inconsistencies.zip](https://github.com/godotengine/godot/files/11031311/v4.0.-.Shader.vec3.vec4.default.inconsistencies.zip)
actions.usage_defines["CUSTOM1"] = "#define CUSTOM1_USED\n";
		actions.usage_defines["CUSTOM2"] = "#define CUSTOM2_USED\n";
		actions.usage_defines["CUSTOM3"] = "#define CUSTOM3_USED\n";
		actions.usage_defines["NORMAL_MAP"] = "#define NORMAL_MAP_USED\n";
		actions.usage_defines["NORMAL_MAP_DEPTH"] = "@NORMAL_MAP";
		actions.usage_defines["COLOR"] = "#define COLOR_USED\n";
		actions.usage_defines["INSTANCE_CUSTOM"] = "#define ENABLE_INSTANCE_CUSTOM\n";
		actions.usage_defines["POSITION"] = "#define OVERRIDE_POSITION\n";
		actions.usage_defines["ALPHA_SCISSOR_THRESHOLD"] = "#define ALPHA_SCISSOR_USED\n";
		actions.usage_defines["ALPHA_HASH_SCALE"] = "#define ALPHA_HASH_USED\n";
		actions.usage_defines["ALPHA_ANTIALIASING_EDGE"] = "#define ALPHA_ANTIALIASING_EDGE_USED\n";
		actions.usage_defines["ALPHA_TEXTURE_COORDINATE"] = "@ALPHA_ANTIALIASING_EDGE";
		actions.usage_defines["SSS_STRENGTH"] = "#define ENABLE_SSS\n";
		actions.usage_defines["SSS_TRANSMITTANCE_DEPTH"] = "#define ENABLE_TRANSMITTANCE\n";
		actions.usage_defines["BACKLIGHT"] = "#define LIGHT_BACKLIGHT_USED\n";
		actions.usage_defines["SCREEN_UV"] = "#define SCREEN_UV_USED\n";
		actions.usage_defines["DIFFUSE_LIGHT"] = "#define USE_LIGHT_SHADER_CODE\n";
		actions.usage_defines["SPECULAR_LIGHT"] = "#define USE_LIGHT_SHADER_CODE\n";
		actions.usage_defines["FOG"] = "#define CUSTOM_FOG_USED\n";
		actions.usage_defines["RADIANCE"] = "#define CUSTOM_RADIANCE_USED\n";
		actions.usage_defines["IRRADIANCE"] = "#define CUSTOM_IRRADIANCE_USED\n";
		actions.render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n";
		actions.render_mode_defines["world_vertex_coords"] = "#define VERTEX_WORLD_COORDS_USED\n";
		actions.render_mode_defines["ensure_correct_normals"] = "#define ENSURE_CORRECT_NORMALS\n";
		actions.render_mode_defines["cull_front"] = "#define DO_SIDE_CHECK\n";
		actions.render_mode_defines["cull_disabled"] = "#define DO_SIDE_CHECK\n";
		actions.render_mode_defines["particle_trails"] = "#define USE_PARTICLE_TRAILS\n";
		actions.render_mode_defines["depth_draw_opaque"] = "#define USE_OPAQUE_PREPASS\n";
		bool force_lambert = GLOBAL_GET("rendering/shading/overrides/force_lambert_over_burley");
		if (!force_lambert) {