### Godot version

v4.0.beta14.official [28a24639c]
v4.0.1.stable.official [cacf49999]

### System information

Windows 11 22H2, Forward+, NVIDIA MX350 (528.02) and NVIDIA RTX2070 (517.00)
Ubuntu 22.04, Forward+, NVIDIA MX350 (525.85.05)

### Issue description

Instancing a GPUParticles3D can cause colored flashes on screen. In some cases (such as the minimal reproduction project), the flashes are small, however in my other project I have seen them fill the screen. I am still unsure what causes the different sizes

These are some example correct frames from the minimal reproduction project (the effect is supposed to be a fireball.)

<img width="578" alt="image" src="https://user-images.githubusercontent.com/8741983/214133602-ff0e5916-fa0b-4e52-8dac-9701b8220a1d.png">

<img width="578" alt="image" src="https://user-images.githubusercontent.com/8741983/214133646-c976fde1-569c-4d0a-9395-fd037f21e0b9.png">

These are some example incorrect frames.

<img width="578" alt="image" src="https://user-images.githubusercontent.com/8741983/214133760-8e4804e8-f194-4d31-b943-0d93ab6d60cb.png">

<img width="578" alt="image" src="https://user-images.githubusercontent.com/8741983/214132553-c6d4be93-5373-43b5-b52e-d9a33924e9bf.png">


### Steps to reproduce

Create two scenes, one with a GPUParticles3D, and one that instances those particles repeatedly, using a script. Flashes will occur on screen.

### Minimal reproduction project

[Particle Flash MRP.zip](https://github.com/godotengine/godot/files/10483071/Particle.Flash.MRP.zip)


Edit 1: Corrected driver version for my friend's computer.
Edit 2: Added note about the issue also appearing on Linux, and that the issue is still present in 4.0.1

*Bugsquad edit (keywords for easier searching): flicker, flickering*
RD::Uniform u;
					u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
					u.binding = 0;
					if (particles->trail_bind_pose_buffer.is_valid()) {
						u.append_id(particles->trail_bind_pose_buffer);
					} else {
						u.append_id(MeshStorage::get_singleton()->get_default_rd_storage_buffer());
					}
					uniforms.push_back(u);
				}
				particles->trail_bind_pose_uniform_set = RD::get_singleton()->uniform_set_create(uniforms, particles_shader.copy_shader.version_get_shader(particles_shader.copy_shader_version, 0), 2);
			}
			if (particles->trail_bind_pose_buffer.is_valid() && particles->trail_bind_poses_dirty) {
				if (particles_shader.pose_update_buffer.size() < uint32_t(particles->trail_bind_poses.size()) * 16) {
					particles_shader.pose_update_buffer.resize(particles->trail_bind_poses.size() * 16);
				}
				for (int i = 0; i < particles->trail_bind_poses.size(); i++) {
					RendererRD::MaterialStorage::store_transform(particles->trail_bind_poses[i], &particles_shader.pose_update_buffer[i * 16]);
				}
				RD::get_singleton()->buffer_update(particles->trail_bind_pose_buffer, 0, particles->trail_bind_poses.size() * 16 * sizeof(float), particles_shader.pose_update_buffer.ptr());
			}
		}
		bool zero_time_scale = Engine::get_singleton()->get_time_scale() <= 0.0;
		if (particles->clear && particles->pre_process_time > 0.0) {
			double frame_time;
			if (fixed_fps > 0) {
				frame_time = 1.0 / fixed_fps;
			} else {
				frame_time = 1.0 / 30.0;
			}