### Godot version

v4.1.1.stable.flathub [bd6af8e0e]

### System information

Linux pop-os 6.4.6-76060406-generic, RTX3060

### Issue description

Setting a texture as a global shader parameter using RenderingServer.global_shader_parameter_set() does not seem to update the shader properly. However, setting the same texture directly on the shader material using material.set("shader_parameter/mask_texture", texture) works as expected.


BTW. I am also seeing error
```
E 0:00:19:0820   sd.gd:22 @ _draw_texture(): Condition "!global_shader_uniforms.variables.has(p_name)" is true.
  <C++ Source>   servers/rendering/renderer_rd/storage_rd/material_storage.cpp:1684 @ global_shader_parameter_set()
```

### Steps to reproduce

0. Add global shader parameter of type sampler2d
1. Create a basic shader with a uniform sampler2D to accept a texture.
2. Generate a texture in GDScript (for example, a simple black/white mask).
3. Attempt to set this texture as a global shader parameter using:
```
RenderingServer.global_shader_parameter_set("uniform_name", texture)
```
4. Observe that the shader does not update with the new texture.
5. Now, set the texture directly on a material instance using:
```
material.set("shader_parameter/uniform_name", texture)
```
6. Observe that the shader updates correctly with the new texture.

Expected behavior:

Setting a global shader parameter using RenderingServer.global_shader_parameter_set() should update all shaders that utilize this global uniform, just as setting it directly on a material instance does.


### Minimal reproduction project

not included
material_data_request_func[RS::SHADER_SKY] = _create_sky_material_func;
	material_data_request_func[RS::SHADER_FOG] = nullptr;
	static_assert(sizeof(GlobalShaderUniforms::Value) == 16);
	global_shader_uniforms.buffer_size = MAX(4096, (int)GLOBAL_GET("rendering/limits/global_shader_variables/buffer_size"));
	if (global_shader_uniforms.buffer_size > uint32_t(Config::get_singleton()->max_uniform_buffer_size)) {
		global_shader_uniforms.buffer_size = uint32_t(Config::get_singleton()->max_uniform_buffer_size);
		WARN_PRINT("Project setting \"rendering/limits/global_shader_variables/buffer_size\" exceeds maximum uniform buffer size of: " + itos(Config::get_singleton()->max_uniform_buffer_size));
	}
	global_shader_uniforms.buffer_values = memnew_arr(GlobalShaderUniforms::Value, global_shader_uniforms.buffer_size);
	memset(global_shader_uniforms.buffer_values, 0, sizeof(GlobalShaderUniforms::Value) * global_shader_uniforms.buffer_size);
	global_shader_uniforms.buffer_usage = memnew_arr(GlobalShaderUniforms::ValueUsage, global_shader_uniforms.buffer_size);
	global_shader_uniforms.buffer_dirty_regions = memnew_arr(bool, global_shader_uniforms.buffer_size / GlobalShaderUniforms::BUFFER_DIRTY_REGION_SIZE);
	memset(global_shader_uniforms.buffer_dirty_regions, 0, sizeof(bool) * global_shader_uniforms.buffer_size / GlobalShaderUniforms::BUFFER_DIRTY_REGION_SIZE);
	glGenBuffers(1, &global_shader_uniforms.buffer);
	glBindBuffer(GL_UNIFORM_BUFFER, global_shader_uniforms.buffer);
	glBufferData(GL_UNIFORM_BUFFER, sizeof(GlobalShaderUniforms::Value) * global_shader_uniforms.buffer_size, nullptr, GL_DYNAMIC_DRAW);
	glBindBuffer(GL_UNIFORM_BUFFER, 0);
	{
		
		ShaderCompiler::DefaultIdentifierActions actions;
		actions.renames["VERTEX"] = "vertex";
		actions.renames["LIGHT_VERTEX"] = "light_vertex";
		actions.renames["SHADOW_VERTEX"] = "shadow_vertex";
		actions.renames["UV"] = "uv";
		actions.renames["POINT_SIZE"] = "point_size";
		actions.renames["MODEL_MATRIX"] = "model_matrix";
		actions.renames["CANVAS_MATRIX"] = "canvas_transform";
		actions.renames["SCREEN_MATRIX"] = "screen_transform";
		actions.renames["TIME"] = "time";
		actions.renames["PI"] = _MKSTR(Math_PI);