### Godot version

4.0beta10 (4.0beta11)

### System information

Windows 11, Vulkan API 1.3.224 - Vulkan NVIDIA GeForce RTX 3080 Ti

### Issue description

GPUParticle2D seems to jitter since Godot Beta 10 (I have the same problem Godot Beta 11).

Here is what I expect (screen capture of the project in Godot Beta 9):
![Animation](https://user-images.githubusercontent.com/6784639/211841608-c7b268ab-98c6-4c2c-9e42-b7730e44ea20.gif)

Here is what I got in Godot 4.0beta10 and Godot 4.0beta11:
![Animation2](https://user-images.githubusercontent.com/6784639/211841773-bdfc7c45-c262-4be9-b5b7-18856ddcb6f3.gif)


### Steps to reproduce

1. Make 2DScene
2. Add GPUParticle2D
3. Set the Process Material of this GPUParticle2D to a new ParticleProcessMaterial
4. Move the particle around (or make a animationPlayer to move the Particle)

### Minimal reproduction project

[TestProject.zip](https://github.com/godotengine/godot/files/10393668/TestProject.zip)

Particles *particles = particles_owner.get_or_null(p_particles);
	ERR_FAIL_COND(!particles);
	particles->restart_request = true;
}
void ParticlesStorage::_particles_allocate_emission_buffer(Particles *particles) {
	ERR_FAIL_COND(particles->emission_buffer != nullptr);
	particles->emission_buffer_data.resize(sizeof(ParticleEmissionBuffer::Data) * particles->amount + sizeof(uint32_t) * 4);
	memset(particles->emission_buffer_data.ptrw(), 0, particles->emission_buffer_data.size());
	particles->emission_buffer = reinterpret_cast<ParticleEmissionBuffer *>(particles->emission_buffer_data.ptrw());
	particles->emission_buffer->particle_max = particles->amount;
	particles->emission_storage_buffer = RD::get_singleton()->storage_buffer_create(particles->emission_buffer_data.size(), particles->emission_buffer_data);
	if (RD::get_singleton()->uniform_set_is_valid(particles->particles_material_uniform_set)) {
		
		RD::get_singleton()->free(particles->particles_material_uniform_set);
		particles->particles_material_uniform_set = RID();
	}
}
void ParticlesStorage::particles_set_subemitter(RID p_particles, RID p_subemitter_particles) {
	Particles *particles = particles_owner.get_or_null(p_particles);
	ERR_FAIL_COND(!particles);
	ERR_FAIL_COND(p_particles == p_subemitter_particles);
	particles->sub_emitter = p_subemitter_particles;
	if (RD::get_singleton()->uniform_set_is_valid(particles->particles_material_uniform_set)) {
		RD::get_singleton()->free(particles->particles_material_uniform_set);
		particles->particles_material_uniform_set = RID(); 
	}
}
void ParticlesStorage::particles_emit(RID p_particles, const Transform3D &p_transform, const Vector3 &p_velocity, const Color &p_color, const Color &p_custom, uint32_t p_emit_flags) {