### 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
update_parameters_internal(p_parameters, p_uniform_dirty, p_textures_dirty, shader_data->uniforms, shader_data->ubo_offsets.ptr(), shader_data->texture_uniforms, shader_data->default_texture_params, shader_data->ubo_size, false);
}
static void bind_uniforms_generic(const Vector<RID> &p_textures, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, int texture_offset = 0, const RS::CanvasItemTextureFilter *filter_mapping = filter_from_uniform, const RS::CanvasItemTextureRepeat *repeat_mapping = repeat_from_uniform) {
	const RID *textures = p_textures.ptr();
	const ShaderCompiler::GeneratedCode::Texture *texture_uniforms = p_texture_uniforms.ptr();
	int texture_uniform_index = 0;
	int texture_uniform_count = 0;
	for (int ti = 0; ti < p_textures.size(); ti++) {
		ERR_FAIL_COND_MSG(texture_uniform_index >= p_texture_uniforms.size(), "texture_uniform_index out of bounds");
		GLES3::Texture *texture = TextureStorage::get_singleton()->get_texture(textures[ti]);
		const ShaderCompiler::GeneratedCode::Texture &texture_uniform = texture_uniforms[texture_uniform_index];
		if (texture) {
			glActiveTexture(GL_TEXTURE0 + texture_offset + ti);
			glBindTexture(target_from_type[texture_uniform.type], texture->tex_id);
			if (texture->render_target) {
				texture->render_target->used_in_frame = true;
			}
			texture->gl_set_filter(filter_mapping[int(texture_uniform.filter)]);
			texture->gl_set_repeat(repeat_mapping[int(texture_uniform.repeat)]);
		}
		texture_uniform_count++;
		if (texture_uniform_count >= texture_uniform.array_size) {
			texture_uniform_index++;
			texture_uniform_count = 0;
		}
	}
}
void CanvasMaterialData::bind_uniforms() {