### 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*
ParticleProcessMaterialData *m = static_cast<ParticleProcessMaterialData *>(material_storage->material_get_data(p_particles->process_material, MaterialStorage::SHADER_TYPE_PARTICLES));
	if (!m) {
		m = static_cast<ParticleProcessMaterialData *>(material_storage->material_get_data(particles_shader.default_material, MaterialStorage::SHADER_TYPE_PARTICLES));
	}
	ERR_FAIL_COND(!m);
	p_particles->has_collision_cache = m->shader_data->uses_collision;
	
	RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
	RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, m->shader_data->pipeline);
	RD::get_singleton()->compute_list_bind_uniform_set(compute_list, particles_shader.base_uniform_set, 0);
	RD::get_singleton()->compute_list_bind_uniform_set(compute_list, p_particles->particles_material_uniform_set, 1);
	RD::get_singleton()->compute_list_bind_uniform_set(compute_list, p_particles->collision_textures_uniform_set, 2);
	if (m->uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(m->uniform_set)) {
		RD::get_singleton()->compute_list_bind_uniform_set(compute_list, m->uniform_set, 3);
		m->set_as_used();
	}
	RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(ParticlesShader::PushConstant));
	if (p_particles->trails_enabled && p_particles->trail_bind_poses.size() > 1) {
		
		RD::get_singleton()->compute_list_dispatch_threads(compute_list, process_amount / p_particles->trail_bind_poses.size(), 1, 1);
		RD::get_singleton()->compute_list_add_barrier(compute_list);
		push_constant.trail_pass = true;
		RD::get_singleton()->compute_list_set_push_constant(compute_list, &push_constant, sizeof(ParticlesShader::PushConstant));
		RD::get_singleton()->compute_list_dispatch_threads(compute_list, process_amount - p_particles->amount, 1, 1);
	} else {
		RD::get_singleton()->compute_list_dispatch_threads(compute_list, process_amount, 1, 1);
	}
	RD::get_singleton()->compute_list_end();
}
void ParticlesStorage::particles_set_view_axis(RID p_particles, const Vector3 &p_axis, const Vector3 &p_up_axis) {